亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

JavaScript關于返回函數數組的值的問題

JavaScript關于返回函數數組的值的問題

開滿天機 2018-11-22 13:14:12
在學習js的閉包問題的時候,js高級程序設計上的代碼例子,我敲了實驗了下結果并不相符,想不明白。function createFunction(){    var result = new Array();    for (var i = 0; i < 10; i++) {        result[i] = function(){        // console.log(i);            return i;        };    }    return result;}這個代碼結果應該返回的是一個數組,每個值都是10,可是在瀏覽器中實驗后,我發現返回的是一個函數數組。求解為什么不是返回一個數值數組?
查看完整描述

1 回答

?
眼眸繁星

TA貢獻1873條經驗 獲得超9個贊

是一個函數數組,每個函數雖然都有返回值 i ,不過這個函數并沒有執行。
你仔細看書的 181 頁,代碼下面第一句話。

這個函數會返回一個函數數組。

之前我看到這兒的時候也有一點疑惑,感覺應該直接全部返回 10 才更直觀。后來想了想,如果直接在返回的函數后面加()執行的話,就相當于每次都創建一個立即執行函數,返回的 i 就是每次正常的索引值,起不到該有的效果。

function createFunction(){

    var result = new Array();

    for (var i = 0; i < 10; i++) {

        result[i] = function(){

            return i;

        }();

    }

    return result;

}

createFunction()    //[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]


查看完整回答
反對 回復 2018-12-10
  • 1 回答
  • 0 關注
  • 2638 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號