首页 > web前端 > js教程 > js闭包和循环

js闭包和循环

巴扎黑
发布: 2016-12-06 09:53:41
原创
894 人浏览过

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=0
num=1
num=2
num=3
num=4
5
0
1
2
3
4
登录后复制

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

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板