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