['1', '2', '3'].map(parseInt) 输出答案和解析
根据题目可以了解到这道题主要考我们的是对
map
函数和parseInt
函数的熟悉程序,所以我们先来了解这两个函数
map
根据MDN上对于map的解释:
map() 方法创建一个新数组,其结果是该数组中的每个元素都调用一个提供的函数后返回的结果。
上面的话读起来可能比较晦涩,我个人理解其实就是遍历数组,对数组的每一项进行遍历并做数据处理。这道题的关注重点就是在于map对于数组处理的方法,所以我们着重看下在MDN对于map参数的解释:
callback
生成新数组的元素的函数,使用三个参数:currentValue
callback数组中正在处理的当前元素index |可选
callback 数组中正在处理的当前元素的索引。array |可选
map 方法调用的数组。
这样的解释就很明白了,map方法的参数是一个回调函数,这个函数会有三个参数:当前元素、当前元素的下标和当前数组。所以这道题可以转换成一下写法:
parseInt('1',0,['1','2','3'])
parseInt('2',1,['1','2','3'])
parseInt('3',2,['1','2','3'])
parseInt
MDN上对于parseInt的解释非常清晰,
parseInt(string, radix) 将一个字符串 string 转换为 radix 进制的整数, radix 为介于2-36之间的数。
第一个参数大家都知道,我们着重看下第二个参数,第二个参数标识进制,默认是10进制的,如果第一个字符不能被转换成数字,parseInt返回NaN。
- 另外关于在基数为 undefined,或者基数为 0 或者没有指定的情况下,JavaScript 作如下处理:
- 如果字符串 string 以"0x"或者"0X"开头, 则基数是16 (16进制).
- 如果字符串 string 以"0"开头, 基数是8(八进制)或者10(十进制),那么具体是哪个基数由实现环境决定。ECMAScript 5 规定使用10,但是并不是所有的浏览器都遵循这个规定。因此,永远都要明确给出radix参数的值。
- 如果字符串 string 以其它任何值开头,则基数是10 (十进制)。
所以我们可以得到上面的代码精简并输出是
parseInt('1',0) // 10进制 输出1
parseInt('2',1) // 1进制 输出NaN
parseInt('3',2) // 2进制 输出NaN
- 所以这道题我们得到答案是
[1, NaN, NaN]