我刚看到this question有人通过了window.Module = window.Module || {}
变成一个函数。
例如:
(function(module){
// do something with module
})(window.Module = window.Module || {});
我明白如果window.Module
未定义(或就此而言为假)则 {}
会被传入,但是设置 window.Module
有什么意义呢?等于自己?
对于发布答案的人:
我读代码是这样的:
if(!(window.Module = window.Module)) {
// pass {} into function
}
else {
// pass window.Module = window.Module into function
// (which makes NO sense to me)
}
最佳答案
那个位做了两件事:
window.Module || {}
位使用 JavaScript's curiously-powerful||
operator评估为window.Module
(如果为真)或{}
(如果window.Module
为假)。||
评估其第一个非假操作数。然后将其结果分配给window.Module
。结果是如果window.Module
是错误的(可能是未定义
),它会被分配{}
;如果它不是假的(它可能已经引用了一个对象),理论上它会被重新分配给自己,尽管在实践中引擎可能足够聪明,不会去理会死存储。然后它将赋值的结果(
window.Module
中的 [now] 值)传递给函数。
所以最终结果是 window.Module
被设置为一个新的空白对象,如果它之前没有设置的话,不管之前是否设置过,无论对象是(现在)在window.Module
被传递到函数中。
关于javascript - 设置与自身相等的点有什么意义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20888639/