# ["1","2","3"].map(parseInt)的输出结果?

# parseInt(string,radix)

将一个字符串string转换成10进制数string基数为radix。等同于Number.parseInt()

永远都要明确给出radix参数的值。如果遇到没给定的情况,默认为10,若string0x或0X开头,为16。

提示

直白的说,该方法就是先将string转换为radix进制数,然后转换成10进制数。

# parseFloat(string)

将一个字符串string解析成浮点数。等同于Number.parseFloat()

# 解题:

两个API解释:

  • parseInt(string,radix):
    • string视为radix进制的数字,转换成十进制,并返回
    • radix不传或者传0时,等价传10
    • radix0X时,等价传16
    • radix1或者大于36时,函数返回NaN
  • map(callback(item,index,arr),thisarg):
    • map接受两个参数,callback函数以及callback函数内部的this指向

弄懂了上面这两个API,该题目可以改写成如下格式:

["1","2","3"].map(function(item,index) {
  return parseInt(item,index);
})

相当于处理:

parseInt("1",0); // radix传0时,相当于传10,所以返回值为 1
parseInt("2",1); // radix传1或大于36时,直接返回       NaN
parseInt("3",2); // radix常规值是2-36,"3"不可能是二进制,所以返回NaN

所以最终的结果是:[1,NaN,NaN]

作者:王龙楷; 标签:原创; 提交时间: 10/26/2020, 4:13:58 PM