使用变量的名称,然后为该变量定义函数
Using the name of a variable and then defining a function for the variable
我看到它在一些javascript上徘徊了一段时间,我想知道它意味着什么。
在此代码中:
var topics = {};
jQuery.Topic = function( id ) {
var callbacks,
topic = id && topics[ id ];
if ( !topic ) {
callbacks = jQuery.Callbacks();
topic = {
publish: callbacks.fire,
subscribe: callbacks.add,
unsubscribe: callbacks.remove
};
if ( id ) {
topics[ id ] = topic;
}
}
return topic;
};
为什么可变主题前面有id &&
?
如果第一个操作数为"falsy",&&
运算符将产生第一个操作,如果第一个运算数不是"falsy",则产生第二个操作。所以,你可以把这个代码读成:
如果给这个函数一个参数,则让主题为
topics[id]
,或者如果不是undefined
。将
false
或0
或其他错误值作为参数传递会导致topic
该值,但阅读代码不会给人留下应该这样做的印象那个
这行要做的是在尝试使用id
之前确保它是一个真实的值。这可能不是一个好主意,因为它会使topics[0]
不可访问。
线topic = id && topics[id]
大致相当于if( id) topic = topics[id]; else topic = id;
相关文章:
- 得到"全局未定义“;全局变量定义清楚时出错
- 使用变量的名称,然后为该变量定义函数
- Javascript 从 php 变量定义 getElementById()
- 使用变量定义宽度和高度
- 函数内部的JavaScript全局变量定义
- Javascript变量定义-澄清
- 为多个变量定义相同的类型,在Webstorm中识别
- 如何用变量定义一个数组,然后用一个数字填充每个数组
- 画布的奇怪行为 上下文变量定义位置导致选项卡处于非活动状态时画布呈现冻结
- 为什么要显式将变量定义为未定义
- Gulp/Grunt 获取触笔工作表中的所有颜色变量,并将它们作为变量定义写入文件
- 是否可以在 Node.js 中为模块变量定义 SET 函数
- ES6 块范围的变量定义作为条件
- 使用 jQuery 获取由变量定义的文本输入的值
- :gt()选择器,为变量定义的索引
- 如何在ASP.NET中将Javascript变量定义为Session
- 带有用户输入的ajax请求变量定义有问题
- 使用ElasticSearch搜索变量定义字段
- 变量定义,不同的输出
- JavaScript变量定义和范围