鍍金池/ 問答/HTML/ ["1","2","3&quo

["1","2","3"].map(parseInt),結果為什么是1,NaN,NaN??

網上解釋說,上面那段代碼相當于[parseInt(1,0),parseInt(2,1),parseInt(3,2)],我不是很理解為什么是這樣的

回答
編輯回答
空白格

圖片描述

圖片描述

2017年9月24日 14:34
編輯回答
孤客

Array.map會接收一個callback

arr.map(function callback(currentValue, index, array) {
    // Return element for new_array
}[, thisArg])

這里parseInt就作為map的callback出現, 所以實際執(zhí)行的就是[parseInt(1,0),parseInt(2,1),parseInt(3,2)]

而parseInt本身就有兩個參數parseInt(string, radix)
第一個是需要parse的字符串,第二個是進制, 所以最后的結果是1,NaN, NaN

2017年12月15日 00:23
編輯回答
毀與悔

map函數會給callback傳遞三個參數,被遍歷的元素、元素的索引和被遍歷的數組本身。
parseInt會接收兩個參數,第一個參數代表需要parse的這個數字,第二參數代表進制,所以會出現你說的那種情況。

2017年2月5日 08:21
編輯回答
入她眼

你可以 看看我的文章

第一題
https://segmentfault.com/a/11...

2017年3月25日 05:08
編輯回答
維她命

相當于這樣

[1, 2, 3].map((num, index) => parseInt(num, index))

而parseInt接收的第二個參數會作為將要轉換的進制,只接受2到36之間的整數
0估計是布爾為false了,使用默認進制,也就是10進制
1是不被允許的進制,應該是相當于錯誤去處理了,無論怎么樣都會返回NaN
二進制中是沒有3的,為NaN

大概是這樣,沒有詳細驗證,見諒

2017年5月29日 05:43