Maison > interface Web > js tutoriel > js闭包和循环

js闭包和循环

巴扎黑
Libérer: 2016-12-10 09:15:16
original
1240 Les gens l'ont consulté

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]())
}
Copier après la connexion

上面的代码会打印出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])
}
Copier après la connexion

执行结果:

Html代码

num=0  
num=1  
num=2  
num=3  
num=4  
5  
0  
1  
2  
3  
4
Copier après la connexion


Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal