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

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

在學(xué)習(xí)js的閉包問題的時(shí)候,js高級(jí)程序設(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ù)組?

為情所困
為情所困

全部回復(fù)(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ù)組元素,并沒有調(diào)用這些函數(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)站素材
前端模板