我见过用两种方式编写的相同代码,想知道它们之间是否有任何权衡。
方法一:
(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/