来源:【知乎-前端学习指南】方应杭-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) }