[‘1’,‘2’,‘3’].map(parseInt) what & why ?
答案 : [1,NaN,NaN]
首先 看到这道题目的时候,脑海里跳出的答案 【1,2,3】,但是为什么这个答案不正确呢?
回顾一下:
map 函数的参数
array.map(function(currentValue, index, arr), thisIndex)
map 函数接受的第一个参数为一个函数(必选),其中函数参数有:
- currentValue : 必须,当前元素的值
- index : 可选,当前元素的索引
- arr : 可选,当前元素属于的数组对象
thisIndex : 可选。对象作为该执行回调时使用,传递给函数,用作 “this” 的值
parseInt 解析字符串
parseInt() 函数可解析一个字符串,并返回一个整数。
parseInt(string,radix)
当参数 radix 的值为 0,或没有设置该参数时,parseInt() 会根据 string 来判断数字的基数。
- string : 必选。要被解析的字符串。
- radix : 可选。表示要解析的数字的基数。该值介于 2-36 之间。
了解了这两个函数之后,我们来模拟一下运行情况:
parseInt("1",0)
// 当参数 radix 的值为 0,或没有设置该参数时,parseInt() 会根据 string 来判断数字的基数
// 所以会返回 1
parseInt("2",1) // 参数 radix 的值介于 2-36 之间,1不处于该返回,不解析,返回NaN
parseInt("3",2) // 参数 radix 的值为 2,二进制表达的数最大值小于 3,所以无法解析,返回NaN
所以最终答案为 [1,NaN,NaN]