Why use (!fn || zid(handler.fn) === zid(fn)) to (!fn || handler.fn === fn) in zepto.js - event.js?

43 Views Asked by At

In event.js, to judge the same handler, here is code:

return handler
  && (!event.e  || handler.e == event.e)
  && (!event.ns || matcher.test(handler.ns))
  && (!fn       || zid(handler.fn) === zid(fn))
  && (!selector || handler.sel == selector)

Why use (!fn || zid(handler.fn) === zid(fn)) to (!fn || handler.fn === fn)

Here is the source code of zid

var _zid = 1
function zid(element) {
  return element._zid || (element._zid = _zid++)
}

if I have to judge two functions, a === b is enough

why to use zid(a) === zid(b)? Maybe some trap?

I don't know why?

Here is the source code of zepto.js event.js: https://github.com/madrobby/zepto/blob/master/src/event.js

0

There are 0 best solutions below