编程语言
首页 > 编程语言> > javascript – 设置与自身相等的东西有什么意义?

javascript – 设置与自身相等的东西有什么意义?

作者:互联网

我刚刚看到this question有人通过了window.Module = window.Module || {}成功能.

例如:

(function(module){
    // do something with module
})(window.Module = window.Module || {});

我理解如果window.Module未定义(或者为false),那么{}将被传入,但是设置window.Module等于它自己的意义是什么?

对于发布答案的人:

我把代码读作:

if(!(window.Module = window.Module)) {
     // pass {} into function
}
else {
     // pass window.Module = window.Module into function 
     // (which makes NO sense to me)
}

解决方法:

这一点做了两件事:

>窗口.模块|| {}位使用JavaScript’s curiously-powerful || operator来评估window.Module(如果它是真实的)或{}(如果window.Module是假的). ||评估其第一个非假名操作数.然后将结果分配给window.Module.结果是,如果window.Module为falsey(可能是未定义的),则会将{}分配给它;如果它不是假的(它可能已经指向一个对象),理论上它会被重新分配给自己,虽然在实践中引擎可能足够聪明,不会打扰死货.
>然后它将赋值结果(window.Module中的值[now])传递给函数.

因此,最终结果是window.Module被设置为一个新的空白对象,如果它之前没有设置,无论它是否在之前设置,窗口中的任何对象(现在)都是.Module被传递给函数.

标签:javascript,variables,parameters,module-pattern
来源: https://codeday.me/bug/20190725/1531994.html