【发布时间】:2015-02-14 17:18:53
【问题描述】:
这是代码
(function(x){
// Some code here
})(1);
上面的代码是 IIFE,所以这意味着它只会被执行一次。 问题:为什么有人需要将参数传递给这个函数(在下面的例子中是 1)?
我可以在函数内部创建变量,如下所示
(function(){
var x = 1;
// Some code here
})();
这个问题不是关于闭包是如何工作的,而是关于为什么以及何时使用第一个 Code Pattern 以及何时使用第二个。
【问题讨论】:
-
请看javascript-closure-inside-loops-simple-practical-example。 Bjorn Tipling 的答案包含带有传递参数的“有用的 IIFE”。
-
显而易见的原因是因为他们希望能够改变 x 的值。
-
你完全正确。唯一需要此构造的情况是,当您想要传递一个变量值并且该标识符将被函数中的某些本地对象遮蔽时。
-
@Andreas 好吧,显然不是。这个问题不是关于闭包是如何工作的,而是关于为什么以及何时使用第一个代码示例以及何时使用第二个。
-
@Teemu 感谢您的回复。刚刚看了你引用的例子,想说不使用参数和使用局部变量也可以得到同样的效果。所以两种变体都可以使用。var fs = [];变量 i, j; for (i=0; i
标签: javascript function syntax iife