【发布时间】:2017-07-06 05:37:28
【问题描述】:
我见过以两种方式编写相同的代码,想知道它们之间是否有任何权衡。
方法一:
(function(i) {
// Do something to i now
}(global_variable))
方法二:
(function() {
// Do something to global_variable now
}())
如果全局变量将存在于该范围内,为什么要将它传递给函数?
【问题讨论】:
-
第一个代码块应该在函数内部使用
i,而不是global_variable。 -
它可以提高引用变量的性能。在 JavaScript 中,范围越近的变量使用起来就越快。
-
避免冲突。如果以后有东西替换了存储在
global_variable中的引用,则 iife 中的代码将不在乎。 -
@KevinB 不确定是否重要,因为它会立即执行。
-
@rasmeister 如果
// Do something是异步的怎么办?
标签: javascript scope es5-shim