日期:2014-05-16  浏览次数:20281 次

关于javascript的闭包 求解
for(var i=0;i<lil.length;i++)
 {
 if(lil[i].id=="z")
 {
 continue;
 }else
 {
 lil[i].onmouseover=function()
 {
 big.src="images/"+"show"+i+"_big.jpg"; 为什么一直都是六 他应该能访问到i才对啊 
 alert(big.src)
 }
 }
谁能帮我讲解下javascript的闭包啊 

什么情况下使用闭包啊  为什么要用闭包

------解决方案--------------------
因为 onmouseover里面的代码 其实不会立即执行的 ,
在执行的时候 i是一个全局的变量,那么结果就是i已经被循环赋值为6了,所以一直都是6。。。
------解决方案--------------------
涉及到作用域
for(var i=0;i<lil.length;i++)
{
if(lil[i].id=="z")
{
continue;
}else
{
lil[i].onmouseover=(function(i)
{return function(){
big.src="images/"+"show"+i+"_big.jpg";  
alert(big.src);
};
})(i)
}

------解决方案--------------------
同意1楼的。关于闭包百度JS闭包一堆文章解释。http://www.cnblogs.com/mzwr1982/archive/2012/05/20/2509295.html这里有你问题的解释!
------解决方案--------------------
http://kb.cnblogs.com/page/110782/