arr.map(parseInt)陷阱

let arr = [1,2,,3];
arr2 = arr.map(parseInt) // 請寫下arr2的內(nèi)容;

這道題大家認為答案是啥呢?

應(yīng)該是[1,NaN, ,NaN]

這道題考察的是函數(shù)的掌握程度
根據(jù)MDN的文檔,Array.prototype.mapparseInt的用法,map函數(shù)會提供三個參數(shù),value、index、arr,而parseInt提供了兩個參數(shù)parseInt(string [, radix])
因此arr.map(parseInt)實際上是arr.map((val, index, arr)=> parseInt(val, index))的一個縮寫,數(shù)組的第一個數(shù)parseInt(1, 0) => 1,從v8源碼看parseInt函數(shù)判斷,如果傳入radix是0,則以10進行處理,因此第一個值是1。
那么第二個值,即是parseInt(2, 1) => NaN,這是因為穩(wěn)定上就說明了,當radix小于2或大于36時(除了上面0的情況),就會返回NaN。

同理,第四位實際上是
parseInt(3, 3) => NaN,由于3進制中是不能出現(xiàn)對應(yīng)進制的數(shù)值的,因此也直接返回NaN 。

而在map中callback 函數(shù)只會在有值的索引上被調(diào)用,第三位沒有直接的索引值,所以返回empty。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容