标签:javascript variables parameters module-pattern
我刚刚看到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
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。