(function(){})() 立即执行函数(匿名函数)

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