刷題-3

['1', '2', '3'].map(parseInt) what & why ?

1. parseInt()

parseInt(string, radix)javascript

  • string: 必需。解析的字符串。java

  • radix: 可選。數組

    • 其值介於 2 ~ 36 之間。若不在此範圍,則 parseInt() 將將返回 NaN。ui

    • 若省略或其值爲 0,則數字將以 10 爲基礎來解析。spa

    • 若以 '0x' 或 '0X' 開頭,將以 16 爲基數。code

console.log(parseInt('18')); // 18 (10 + 8)
console.log(parseInt('18', '0X22')); // 42 (0X22 === 32+2 === 34) (34 + 8)
console.log(parseInt('18', 1)); // NaN
console.log(parseInt(100, 2)); // 4 (1 * 2 的平方)

複製代碼

回到題目

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

對於每一個迭代map, parseInt()傳遞兩個參數: 字符串和基數字符串

因此實際執行的代碼是:string

['1', '2', '3'].map((item, index) => {
    return parseInt(item, index)
})

// 結果:

console.log(parseInt('1', 0)); // 1
console.log(parseInt('2', 1)); // NaN (基數介於 2 - 36 之間)
console.log(parseInt('3', 2)); // NaN ('3' 不是二進制)

因爲 map 返回一個數組,因此爲 [1, NaN, NaN];

複製代碼
相關文章
相關標籤/搜索