# ["1","2","3"].map(parseInt)的输出结果?
# parseInt(string,radix)
将一个字符串string转换成10进制数,string基数为radix。等同于Number.parseInt()。
永远都要明确给出radix参数的值。如果遇到没给定的情况,默认为10,若string以0x或0X开头,为16。
提示
直白的说,该方法就是先将string转换为radix进制数,然后转换成10进制数。
# parseFloat(string)
将一个字符串string解析成浮点数。等同于Number.parseFloat()。
# 解题:
两个API解释:
- parseInt(string,radix):
- 将
string视为radix进制的数字,转换成十进制,并返回 radix不传或者传0时,等价传10radix传0X时,等价传16radix传1或者大于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]