javascript变量存储

var i = 1;

开辟一个空间名为i,并且存储值为1。

var li = document.getElementsByTagName('li');
for(var i = 0; i < li.length; i++){
  li[i].addEventListener('click',function(e){
    alert(i);
  }
}

点击li时,alert出的相同的结果,i的值都为li.length的值。

给每个li注册点击事件,并绑定回调函数function(e)(alert( i)。在点击事件触发后执行回调函数时,i变量的存储值为li.length。

var li = document.getElementsByTagName('li');
for(var i = 0; i < li.length; i++){
  (function(index){
    li[i].addEventListener('click',function(e){
      alert(index);
    }
  })(i);
}

点击li时,正确alert出每个li的索引位置。

执行每次for循环时,通过自执行函数把当前i的值传递给参数变量index,在执行回调函数时,读取参数的index值。index值不释放。

原文地址:https://www.cnblogs.com/fe-huahai/p/6388873.html