['1','2','3'].map(parseInt) 結(jié)果

面試題,結(jié)果為 [ 1, NaN, NaN ]



map

Array.prototype.map( callbackFn )

callbackFn 函數(shù)會(huì)被自動(dòng)傳入三個(gè)參數(shù):數(shù)組元素,元素索引,原數(shù)組本身。

所以 ['1','2','3'].map(parseInt) 就是將數(shù)字1,2,3作為元素;0,1,2作為下標(biāo)分別調(diào)用 parseInt 函數(shù)。即分別求出 parseInt('1',0), parseInt('2',1), parseInt('3',2)的結(jié)果。



parseInt

語(yǔ)法

parseInt(string, radix);

參數(shù)

string

要被解析的值。如果參數(shù)不是一個(gè)字符串,則將其轉(zhuǎn)換為字符串 (使用 ToString抽象操作)。字符串開(kāi)頭的空白符將會(huì)被忽略。

radix_ 可選_

236 的整數(shù),表示進(jìn)制的基數(shù)。例如指定 16 表示被解析值是十六進(jìn)制數(shù)。如果超出這個(gè)范圍,將返回 NaN。假如指定 0 或未指定,基數(shù)將會(huì)根據(jù)字符串的值進(jìn)行推算。注意,推算的結(jié)果不會(huì)永遠(yuǎn)是默認(rèn)值 10!文章后面的描述解釋了當(dāng)參數(shù) radix 不傳時(shí)該函數(shù)的具體行為。

返回值

從給定的字符串中解析出的一個(gè)整數(shù)。

或者 NaN,當(dāng)

  • radix 小于 2 或大于 36,或

  • 第一個(gè)非空格字符不能轉(zhuǎn)換為數(shù)字。

parseInt('123', 5) // 將'123'看作 5 進(jìn)制數(shù),返回十進(jìn)制數(shù) 38 => 1*5^2 + 2*5^1 + 3*5^0 = 38



結(jié)果分析

['1','2','3'].map(parseInt)即

parseInt('1',0);radix 為 0,parseInt() 會(huì)根據(jù)十進(jìn)制來(lái)解析,所以結(jié)果為 1;

parseInt('2',1);radix 為 1,超出區(qū)間范圍,所以結(jié)果為 NaN;

parseInt('3',2);radix 為 2,用2進(jìn)制來(lái)解析,應(yīng)以 0 和 1 開(kāi)頭,所以結(jié)果為 NaN。

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

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