立即调用函数中 的 I 的值是如何确定的
for(var i = 0; i < len; i++ ){ // 使用立即调用的函数表达式,为了获得不同的I值 (function(i){ console.log(i); imgs[i].onmousemove = function(){ console.log(i); // 先将每道门复位 setImgsPos(); // 打开门 for(var j = 1; j <= i; j++){ //imgs[j].style.left = parseInt(imgs[j].style.left,10) - translate + 'px'; imgs[j].style.left = imgs[j].offsetLeft - translate + 'px'; } } })(i); }
在这一章中最后一段执行代码, for循环中套入立即调用匿名函数(function(i))(i);
这里的for循环 是只循环了一遍就获取到了I的不同的值吗?
若我不用匿名函数立即调用直接
for(var i = 0; i < len; i++ ){
imgs[i].onmousemove = function(){
// 先将每道门复位
setImgsPos();
// 打开门
for(var j = 1; j <= i; j++){
//imgs[j].style.left = parseInt(imgs[j].style.left,10) - translate + 'px';
imgs[j].style.left = imgs[j].offsetLeft - translate + 'px';
}
}
}
当鼠标滑动图片 4个图片就同时执行,且获取不到J的值,
我想咨询下 匿名函数立即调用 (function(i))(i); 的原理