App下載
話題 首頁 > JavaScript 教程 > JavaScript 教程話題列表 > 詳情

循環(huán)內(nèi)的函數(shù)問題

精華
q462173711 2016-10-20 02:45:37 瀏覽(2914) 回復(5) 贊(0)
var a = [];
for (var i = 0; i < 10; i++) {
  a[i] = function () {
    console.log(i);
  };
}
a[6](); // 10
a[6] //
function(){
    console.log(i); 
}

我不理解的是,這里為什么不是

a[6] = function () {
        console.log(6);
      };


javascript

回答(5)

babyfiyme 2016-10-20

因為 i 的作用域 是 window,每循環(huán)一次,都會重新賦值。 給你改寫一個了一個demo,用外套function鎖定作用域,可以實現(xiàn)你要的效果

var a = [];
for (var i = 0; i < 10; i++) {
  a[i] = (function (i) {
    return function(){
        console.log(i);
    }
  })(i);
}

運行結(jié)果:

> a[6];
function(){
    console.log(i);
}


>a[6]();
6
一筆荒蕪 2018-05-31

好慢呀,空空如也,半天不來大神解決,大佬在哪啦

1144100656 2018-05-31

剛學習程序,過來學習學習!!!!...

1152696398 2018-05-31

快來解決啦!快來!快來! 快來 快來

要回復,請先登錄 或者注冊