javascript - 设置与自身相等的点有什么意义?

标签 javascript variables parameters module-pattern

我刚看到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)
}

最佳答案

那个位做了两件事:

  1. window.Module || {} 位使用 JavaScript's curiously-powerful || operator评估为 window.Module(如果为真)或 {}(如果 window.Module 为假)。 || 评估其第一个非假操作数。然后将其结果分配给 window.Module。结果是如果 window.Module 是错误的(可能是未定义),它会被分配{} ;如果它不是假的(它可能已经引用了一个对象),理论上它会被重新分配给自己,尽管在实践中引擎可能足够聪明,不会去理会死存储。

  2. 然后它将赋值的结果(window.Module 中的 [now] 值)传递给函数。

所以最终结果是 window.Module 被设置为一个新的空白对象,如果它之前没有设置的话,不管之前是否设置过,无论对象是(现在)在window.Module 被传递到函数中。

关于javascript - 设置与自身相等的点有什么意义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20888639/

相关文章:

Javascript:代码片段,无法让它工作(设置和读取cookie)

php - 从类访问其他文件中定义的变量

c++ - 为什么我不能将模板参数传递给另一个模板?

objective-c - 如何在 iOS 中通过参数将 UITableView IndexPath 传递给 UIButton @selector?

javascript - 如何默认隐藏表单并在点击时显示

javascript - 我如何将此 jQuery 代码转换为 jQuery 函数?

javascript - jQuery/JavaScript - 重复计时器,在达到零时保存到 MySQL

javascript - 如何更改单选按钮的文本

java - Java 中是否有类似于 Swift 的强引用循环(或类似的东西)的概念?

java - 如何返回数组的特定元素?