这个问题已经在这里有了答案:




已关闭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/

10-11 21:15