javascript - 为什么要将全局变量传递给函数?

标签 javascript scope es5-shim

我见过用两种方式编写的相同代码,想知道它们之间是否有任何权衡。

方法一:

(function(i) {
    // Do something to i now
}(global_variable))

方法二:

(function() {
    // Do something to global_variable now
}())

如果全局变量无论如何都会存在于该作用域中,为什么还要将它传递给函数?

最佳答案

在这种情况下,它给出了明确的说明,该函数使用全局变量并创建更易于键入的别名。此外,它使访问变量的速度更快一些,因为它不需要搜索所有范围,直到在全局范围内找到它。

对于常规函数,而不是您示例中的 iife,它使您的函数更易于测试,因为您可以更轻松地模拟传入的全局变量。

关于javascript - 为什么要将全局变量传递给函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42285302/

相关文章:

javascript - Microsoft Stack 中的 D3 示例

javascript - Node.js Express.js secret 静态文件

javascript - 此场景中的 xhr 错误事件对象详细信息是什么?

arrays - 从 JSON 数组访问特定值 swift 4

javascript - 我可以通过什么方式(如果有的话)获取 javascript 中匿名函数闭包的引用?

javascript - Requirejs 为什么以及何时使用垫片配置

javascript - document.getElementById().value 返回空字符串而不是文本字段的值

java - Java中的变量作用域

javascript - Bloodhound typeahead 在控制台 laravel 中未定义

javascript - 检查 javascript 是否加载了 es5-shim.js?那是为了ie8