爲何['1', '7', '11'].map(parseInt) returns [1, NaN, 3]?

前言

早上收到Medium的郵件推送,看到這樣一篇文章:Why ['1', '7', '11'].map(parseInt) returns [1, NaN, 3] in Javascriptthis

看定義

map語法:code

array.map(function(currentValue,index,arr), thisValue)

parseInt語法:ip

parseInt(string, radix);

估計不多有人在乎第二個參數字符串

radix
一個介於2和36之間的整數(數學系統的基礎),表示上述字符串的基數。好比參數"10"表示使用咱們一般使用的十進制數值系統。始終指定此參數能夠消除閱讀該代碼時的困惑而且保證轉換結果可預測。當未指定基數時,不一樣的實現會產生不一樣的結果,一般將值默認爲10。get

分解

['1', '7', '11'].map(parseInt)

step1:數學

parseInt('1', 0, ['1', '7', '11']);   => 1

step2:string

parseInt('7', 1, ['1', '7', '11']);   => NaN

step3:io

parseInt('11', 2, ['1', '7', '11']);   => 3

緣由

簡單來講就是map傳了index參數到parseInt的radix,致使parse出現意料以外的錯誤。function

相關文章
相關標籤/搜索