为什么有些程序员传入全局 window
对象,我理解这是为了更好的性能和最小化的好处,还有来自完全相同的全局空间 window< 的其他依赖对象/函数
但通过另一个参数传入?
但是他们也使用来自 window
的函数,它们没有显式传入,比如 setTimeout()
。
(function (dependency1, dependency2, dependency3, dependency4) {
'use strict';
//body
window.setTimeout(function() { // <--
//body
}, 1000);
//etc.
}(window, window.document, window.AjaxRequest, window.util.padNumber)); // <--
与下面的变体相比,使用顶部变体有什么好处吗,后者基本上仍然可以访问相同的依赖项?
(function (window) {
'use strict';
//body
window.setTimeout(function() {
//body
}, 1000);
//etc.
}(window));
最佳答案
- 解释器不必向上遍历范围来查找依赖项,它们只在当前范围内可用。
- 依赖项的位置/命名空间将来可能会发生变化,但如果您将它们作为参数传入,您只需更改传递的参数,而不是代码中出现的所有地方。
- 缩小,局部变量可以安全重命名
关于javascript - 将窗口传入 IIFE 和其他依赖项也来自窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29764437/