我从 jQuery native 代码中获取了以下表达式:
handlers = ( jQuery._data( this, "events" ) || {} )[ event.type ] || []
我很好奇在什么条件下表达式的最后一部分 - []
- 将被分配给 handlers
变量?这是我的猜测:
1) 这部分首先执行( jQuery._data( this, "events") || {} )
。如果没有附加事件 jQuery._data( this, "events") === undefined
,则返回空对象。
2) 然后这部分{}[event.type] || []
已处理。如果 event.type
未定义,则返回一个数组并将其分配给 handlers
变量。那么这意味着对于要返回的数组来说,event.type
未定义就足够了?
我说得对吗?
最佳答案
基本上是这样的
它只是想这样做。
jQuery._data(this, "events")[event.type] || []
但是,如果 jQuery._data(this, "events")
为 false(未定义),他们会首先将其设置为 {}
,以便 [event.type]
对象属性访问器不会抛出异常。
另一种写法可能是
handlers = (function(context){
var events = jQuery._data(context, "events") || {};
return events[event.type] || [];
})(this);
关于javascript - 当返回表达式的最后一部分时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18439322/