clipboard.png

为什么是[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函数传递了两个参数currentValueindex,所以我们来把Array.map()函数方法写全

clipboard.png

那么代码应该是:

['1','2','3'].map((cur,index)=>{
   return parseInt(cur,index);
})

那么代码执行的是

parseInt(1,0); // 不存在0,直接使用默认值十进制
parseInt(2,1); // 一机制,不存在2
parseInt(3,2); // 二进制,不存在3

Kisnnnn
46 声望5 粉丝

[链接]