首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > JavaScript >

关于js闭包有好几点太清楚的东西,希望能给予解答!

2013-08-01 
关于js闭包有好几点太明白的东西,希望能给予解答!!本帖最后由 Henry_YQH 于 2013-07-25 15:12:24 编辑下面

关于js闭包有好几点太明白的东西,希望能给予解答!!
本帖最后由 Henry_YQH 于 2013-07-25 15:12:24 编辑 下面这段代码是用来鼠标放到每个图片上,自动改变背景图片的:

 for(var i = 2 ;i<11;i++){
  (function(){
  var x=i;
  $("#img"+x).mouseover(function(){
    $("#img"+x).attr("src", "/LogService/images/hover_"+(x-1)+".jpg"); 
  });
    $("#img"+x).mouseleave(function(){
    $("#img"+x).attr("src", "/LogService/images/"+(x-1)+".jpg"); 
    });
  })();
  }



为什么上面的代码改成这样就不行了呢?
for(var x = 2 ;x<11;x++){
  (function(){
  $("#img"+x).mouseover(function(){
    $("#img"+x).attr("src", "/LogService/images/hover_"+(x-1)+".jpg"); 
  });
    $("#img"+x).mouseleave(function(){
    $("#img"+x).attr("src", "/LogService/images/"+(x-1)+".jpg"); 
    });
  })();
  }



还有我对这段代码最后的()不是很理解,这个()的作用是什么,拿掉会出问题!
[解决办法]
引用:
Quote: 引用:

for(var i = 0 ;i<2;i++){
      (function(){ setTimeout(function(){alert(i)}) })();    
      }

for(var i = 0 ;i<2;i++){
      (function(i){ setTimeout(function(){alert(i)}) })(i);    
      }

你分别运行看看区别

效果看了  没懂

换工作把
[解决办法]
闭包是可以包含自由(未绑定到特定对象)变量的代码块;这些变量不是在这个代码块内或者任何全局上下文中定义的,而是在定义代码块的环境中定义(局部变量)。

一个是一个代码块  一个是一个对象(变量)      

引用:
Quote: 引用:

for(var i = 0 ;i<2;i++){


      (function(){ setTimeout(function(){alert(i)}) })();    
      }

for(var i = 0 ;i<2;i++){
      (function(i){ setTimeout(function(){alert(i)}) })(i);    
      }

你分别运行看看区别


效果看了  没懂
关于js闭包有好几点太清楚的东西,希望能给予解答!

热点排行
Bad Request.