javascript – 获取NaN不一致地映射parseInt

正在玩一些代码来创建一个0的数组,发现只有一个值返回NaN而不是0.我得到这个在Chrome,Node和Firefox。

什么是第二个值是NaN?

var arr = new Array(32).join(0).split('').map(parseInt)
// prints [0, NaN, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
console.dir(arr)
这是因为传递给map的函数将被调用三个参数:

>当前的数组项
>该项目的索引
>整个数组

在这种情况下,该函数是parseInt,它只使用两个参数:

>要解析的字符串
>用于解析字符串的基数
>其他参数将被忽略。

因此,对于数组中的第二项(即索引1),调用将是

parseInt("0", 1, ignoredArray)

当基数为1时,返回NaN:

  • Let R = 07002(radix).
  • If R ≠ 0, then
    • If R < 2 or R > 36, then return NaN.

另请注意,如果您使用像Array(99)这样的更大的数字,那么您将看到NaN从索引37开始。

http://stackoverflow.com/questions/32322362/getting-nan-inconsistently-mapping-parseint

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:javascript – 获取NaN不一致地映射parseInt