let arr = [1,2,,3];
arr2 = arr.map(parseInt) // 請寫下arr2的內(nèi)容;
這道題大家認為答案是啥呢?
應(yīng)該是[1,NaN, ,NaN]
這道題考察的是函數(shù)的掌握程度
根據(jù)MDN的文檔,Array.prototype.map和parseInt的用法,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。