js闭包和循环

来源:互联网 发布:最近邻居算法 编辑:程序博客网 时间:2024/06/09 21:31
function box(){  var arr = [];  for(var i=0;i<5;i++){    arr[i]=function(){      return i;    }  }  return arr;}var b = box();console.log(b.length);for(var i=0;i<b.length;i++){  console.log(b[i]())}

上面的代码会打印出5个5

因为b[i]()调用的是匿名函数,然而匿名函数并没有自我执行,所以等到调用的时候,box()已经执行完毕。。。。



function box(){  var arr = [];  for(var i=0;i<5;i++){    arr[i]=(      function(num){        console.log("ccc="+num)        return num;      }    )(i)  }  return arr;}var b = box();console.log(b.length);for(var i=0;i<b.length;i++){  console.log(b[i])}

执行结果:

num=0num=1num=2num=3num=4501234



修改后让匿名函数自我执行,导致最后b[i]返回的是数组而不再是函数了 
0 0
原创粉丝点击