这个问题已经在这里有了答案:
已关闭8年。
希望这是一个直截了当的问题:
使用自调用匿名函数的目的是什么?是否只是为了防止使用变量等“污染”全局作用域?还是使用它们还有其他优势?
最佳答案
根据我的个人经验,除了使用匿名函数来引发作用域之外,我还在for循环中使用了它来进行封闭。当DOM元素需要存储其计数并且您无权访问jQuery等库时,这很有用。
假设您有100个DIV
元素。单击第一个DIV
元素应发出警报1,类似地,单击第56个div元素应发出警报56。
因此,在创建这些元素时,通常会执行以下操作
// Assume myElements is a collection of the aforementioned div elements
for (var i = 0; i < 100; ++i) {
myElements[i].onclick = function() {
alert( 'You clicked on: ' + i );
};
}
由于计数器当前为99,这将发出99警报。此处不保留
i
的值。但是,当使用匿名函数解决问题时,
for (var i = 0; i < 100; ++i) {
(function(count){
myElements[count].onclick = function() {
alert( 'You clicked on: ' + count );
};
})(i);
}
在此,
i
的值得以保留,并显示正确的计数。关于javascript - "Self Invoking Anonymous Functions"的目的,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10831724/