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值不释放。