网红前端面试题 [10, 20, 30].map(parseInt)

面试题

// 运行结果是?
[10, 20, 30].map(parseInt)

考察点

parseInt(string, radix) 解析一个字符串,并返回一个整数

参数 描述
string 必需。要被解析的字符串。
radix 可选。表示要解析的数字的基数。该值介于 2 ~ 36 之间。

当参数 radix 的值为 0,或没有设置该参数时,parseInt() 会根据 string 来判断数字的基数。

  • 如果 string 以 “0x” 开头,parseInt() 会把 string 的其余部分解析为十六进制的整数。

  • 如果 string 以 0 开头,那么 ECMAScript v3 允许 parseInt() 的一个实现把其后的字符解析为八进制或十六进制的数字。

  • 如果 string 以 1 ~ 9 的数字开头,parseInt() 将把它解析为十进制的整数。

  • radix 小于2或大于36,则返回 NaN

  • 若无第二个参数,或第二个参数为10,则以10为基数

    parseInt(10); //返回 10
    parseInt(19,10); //返回 19 (10+9)
    
  • 若第二个参数以 0x 或 0X 开头,则以16为基数

parseInt("11",2); //返回 3 (1*2+1)
parseInt("17",8); //返回 15 (1*8+7)
parseInt("17",6) = parseInt(1,6) = 1  // 7>6 即已越界,无法解析,最终会在越界的上一位停止解析
parseInt("10"9) //返回 9 (1*9+0)

解析

[10, 20, 30].map(parseInt)

// 等同于

[10, 20, 30].map((num, index) => {
    
    
    return parseInt(num, index)
})
  • 10时,index 为 0 ,按10进制转换,得到10 ;
  • 20时,index 为 1 ,但 parseInt 的第2个参数 radix 需为2 ~ 36,否则返回NAN,得到 NaN
  • 30 按二进制,只能由 0 和 1 组成,所以无法转换,得到 NaN

最终答案

[ 10, NaN, NaN ]   

猜你喜欢

转载自blog.csdn.net/weixin_41192489/article/details/141900144