为什么是[1,NaN,NaN]而不是[1,2,3]?
首先看下 Array.map()函数在MDN中的定义
Array.map()
语法
var new_array = arr.map(function callback(currentValue[, index[, array]]) {
// Return element for new_array
}[, thisArg])
参数
-
callback
生成新数组元素的函数,有三个参数-
currentValue
`callback`数组中正在处理的当前元素
-
index
`callback`数组中正在处理的当前元素的索引
-
array
`callback` `map`方法被调用的数组
-
- thisArg 可选
执行callback
函数时使用的this
的值
parseInt
语法
parseInt(string,radix)
参数
- string
被解析的值 - radix
一个介于2和36之见的整数,标示上述字符串的基数
。比如参数"10"表示使用我们通常使用的十进制数值系统。始终指定此参数可以消除阅读该代码时的困惑并且保证转换结果可预测。当未指定基数时,不同的实现会产生不同的结果,通常将值默认为10。
那么['1', '2', '3'].map(parseInt)
,记上向parsenInt函数传递了两个参数currentValue
和index
,所以我们来把Array.map()
函数方法写全
那么代码应该是:
['1','2','3'].map((cur,index)=>{
return parseInt(cur,index);
})
那么代码执行的是
parseInt(1,0); // 不存在0,直接使用默认值十进制
parseInt(2,1); // 一机制,不存在2
parseInt(3,2); // 二进制,不存在3
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。