首頁 > web前端 > js教程 > 主體

js閉包和循環

巴扎黑
發布: 2016-12-10 09:15:16
原創
1165 人瀏覽過

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])
}
登入後複製

執行結果:

Html程式碼  

num=0  
num=1  
num=2  
num=3  
num=4  
5  
0  
1  
2  
3  
4
登入後複製


來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
最新問題
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!