javascript - 当返回表达式的最后一部分时

标签 javascript jquery

我从 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/

相关文章:

javascript - 如何使用jquery在行位于顶部或底部时更改图标颜色

javascript - 将 ViewModel 映射到 JS 对象

javascript - 动态创建的输入字段的奇怪行为

javascript - 如何滚动到响应式网站中的 anchor ?

javascript - 模拟鼠标点击

jquery - 动态确定div的高度

javascript - Google Apps 脚本两个标签之间的目标文本

javascript - cordova 插件的元数据值未更新

javascript - 三个 js。单击另一个纹理/图像更改纹理负载

javascript - jQuery :last selector