来源:【知乎-前端学习指南】方应杭-https://zhuanlan.zhihu.com/p/22465092
什么是立即执行函数
/*先创建匿名函数,然后立即进行调用。
*/
function(){alert('我是匿名函数')}()
例题,为什么点击打印出来的都是6
/*
*/
var liList = ul.getElementsByTagName('li')
for(var i=0; i<6; i++){
liList[i].onclick = function(){
alert(i) // 为什么 alert 出来的总是 6,而不是 0、1、2、3、4、5
}
}
因为此处,i的值是全局变量,并没有单独为每个li赋值i。
而使用立即执行函数,可避免变量污染。
/*
*/
var liList = ul.getElementsByTagName('li')
for(var i=0; i<6; i++){
!function(ii){
liList[ii].onclick = function(){
alert(ii) // 0、1、2、3、4、5
}
}(i)
}