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维护值并显示正确的计数.