<分区>
以下两个代码片段有什么区别?我已经看到两者都用于模块模式、闭包和更高级别的函数声明。两者的正确用途是什么?
(function(){
})();
(function(window){
})(window);
标签 javascript
<分区>
以下两个代码片段有什么区别?我已经看到两者都用于模块模式、闭包和更高级别的函数声明。两者的正确用途是什么?
(function(){
})();
(function(window){
})(window);
最佳答案
在这种情况下语义差异很小。但是,如果在整个代码中大量使用 window
,将其别名为局部变量可以实现更好的缩小。
(function (window) { window['foo'] = window['baz']; })(window);
可以缩小到
(function(w){w['foo']=w['baz']})(window)
如果没有本地别名,window
将无法缩小,而是缩小
(function(){window['foo']=window['baz']})()
还有其他原因以及类似技巧的其他用例。看看this问题以找到更深入的解释。
关于javascript - (function(window){}) 和 (function(){}) 之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27854671/
相关文章:
javascript - jQuery 使用replaceText 和变量替换文本
javascript - 如何使用YUI在select标签中制作真正的鼠标点击事件?
javascript - 添加事件监听器之前是否需要声明目标变量?
javascript - (Vanilla JS) 使用已知索引值触发表格单元格的点击
javascript - 在 webGL 中绘制参数形状(不使用 Three.js)
javascript - fullcalendar v4 modif ajax 问题 + event.setDates 语法错误
javascript - 更改 HighCharts 图表中悬停系列及其点属性的替代方法