国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

JavaScript關(guān)於傳回函數(shù)數(shù)組的值的問題
為情所困
為情所困 2017-05-19 10:30:05
0
3
565

在學(xué)習(xí)js的閉包問題的時(shí)候,js高階程式設(shè)計(jì)上的程式碼例子,我敲了實(shí)驗(yàn)了下結(jié)果並不相符,想不明白。

function createFunction(){
    var result = new Array();
    for (var i = 0; i < 10; i++) {
        result[i] = function(){
        // console.log(i);
            return i;
        };
    }
    return result;
}

這個(gè)程式碼結(jié)果應(yīng)該回傳的是一個(gè)數(shù)組,每個(gè)值都是10,可是在瀏覽器中實(shí)驗(yàn)後,我發(fā)現(xiàn)回傳的是一個(gè)函數(shù)數(shù)組。

#求解為什麼不是回傳一個(gè)數(shù)值數(shù)組?

為情所困
為情所困

全部回覆(3)
僅有的幸福

是一個(gè)函數(shù)數(shù)組,每個(gè)函數(shù)雖然都有回傳值 i ,不過這個(gè)函數(shù)並沒有執(zhí)行。
你仔細(xì)看書的 181 頁,代碼下面第一句話。

這個(gè)函數(shù)會(huì)回傳一個(gè)函數(shù)數(shù)組。

之前我看到這裡的時(shí)候也有一點(diǎn)疑惑,感覺應(yīng)該直接全部返回 10 才更直觀。後來想了想,如果直接在傳回的函數(shù)後面加()執(zhí)行的話,就相當(dāng)於每次都創(chuàng)建一個(gè)立即執(zhí)行函數(shù),返回的 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]
漂亮男人

因?yàn)槟阒皇前押瘮?shù)賦給數(shù)組元素,並沒有??呼叫這些函數(shù)。

function createFunction(){
    var result = new Array();
    for (var i = 0; i < 10; i++) {
        result[i] = (function(){
            return i;
        })();
    }
    return result;
}
洪濤

result 作為數(shù)組,其元素是函數(shù)。

所以就會(huì)有你這個(gè)狀況

如果想要得到你想要的全部是 10 ,只需要遍歷這個(gè)數(shù)組並調(diào)用作為數(shù)組元素的函數(shù),把返回值 log 出來

createFunction().forEach(fn => console.log(fn())); 

最新下載
更多>
網(wǎng)站特效
網(wǎng)站源碼
網(wǎng)站素材
前端模板