App下載
話題 首頁(yè) > JavaScript 教程 > JavaScript 教程話題列表 > 詳情

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

精華
q462173711 2016-10-20 02:45:37 瀏覽(2925) 回復(fù)(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

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

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

運(yùn)行結(jié)果:

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


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

好慢呀,空空如也,半天不來(lái)大神解決,大佬在哪啦

1144100656 2018-05-31

剛學(xué)習(xí)程序,過(guò)來(lái)學(xué)習(xí)學(xué)習(xí)!!!!...

1152696398 2018-05-31

快來(lái)解決啦!快來(lái)!快來(lái)! 快來(lái) 快來(lái)

要回復(fù),請(qǐng)先登錄 或者注冊(cè)