"自我调用匿名函数"的目的

Nea*_*lbo 7 javascript function anonymous-function

可能重复:
javascript中自执行函数的目的是什么?

希望非常直截了当的问题:

使用自调用匿名函数的目的是什么?是否只是为了防止用变量等"污染"全球范围?或者使用它们还有其他优点吗?

Ash*_*thy 11

根据我的个人经验,除了使用匿名函数来引入范围之外,我还在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 );
    };
}
Run Code Online (Sandbox Code Playgroud)

这将警告99,因为计数器当前为99. i此处不保留值.

但是,当使用匿名函数来解决问题时,

for (var i = 0; i < 100; ++i) {
    (function(count){
     myElements[count].onclick = function() {
         alert( 'You clicked on: ' + count );
     }; 
    })(i);
}
Run Code Online (Sandbox Code Playgroud)

此处i维护值并显示正确的计数.