[10,20,30].map(parseInt) 返回的结果是什么?

336 阅读1分钟

[10,20,30].map(parseInt) 返回的结果是什么?

  • map 的参数和返回值
  • parseInt 参数和返回值
const res = [10, 20, 30].map(parseInt)
console.log(res) // [10, NaN, NaN]

拆解后等同于如下:

[10, 20, 30].map((num, index) => {
    return parseInt(num, index)
})
parseInt(10, 10) // 10\
parseInt(20,1) // NaN\
parseInt(30, 2) // NaN
  1. parseInt 函数返回的是十进制结果
  2. 第二个参数的确是进制,是表明以该进制解析第一个参数。
  3. 如果第二个参数没有或者为0,应该是按浏览器默认设置去解析(一般都会默认十进制,但有些环境可能会有偏差,比如把0开头的数值字符串解析为八进制数)。

例如 parseInt(10, 0) 以十进制来说自然就是 10 。
但是如果是 parseInt(30, 2) 30 不是 二进制的数,所以会返回 NaN 。

一般做进制转换,都会先用 parseInt 转换为十进制,然后用 toString 转换为其它进制。

参考:parseInt()详解_糖长老莫小贝的博客-CSDN博客_parseint

对应:developer.mozilla.org/zh-CN/docs/…