關於 ["1", "2", "3"].map(parseInt) 爲什麼返回 [1,NaN,NaN]?

console.log(["1", "2", "3"].map(parseInt));

爲什麼沒有返回[1,2,3]返回的卻是[1,NaN,NaN]?

我們先單獨看看map裏面運行會有哪些數據

    var a = ["1","2","3"];
    a.map(function (value,index) {
        console.log("value:",value,"index:",index);
    });

結果

在說說parseInt

    var b = "123";
    console.log(parseInt(b));

結果當然是數字123,平時是這麼用得多吧?然而它居然有第二個參數,所以我在上面打印出了index的值

下面是w3c對parseInt的解釋

我們換一種方式看["1", "2", "3"].map(parseInt)

    var a = [];
    a.push(parseInt("1",0));
    a.push(parseInt("2",1));
    a.push(parseInt("3",2));
    console.log(a);

結果

第一次:parseInt("1",0)    //第二參數爲0相當於默認的方法,所以得到了1

第二次:parseInt("2",1)    //由於第二參數爲1小於2了,所以得到了NaN

第三次:parseInt("3",2)    //雖然第二參數2符合條件,但是參數一3並不能當成二進制解釋,所以得到了NaN

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章