JavaScript:使用Array.map解析parseInt的基础之谜

Pep*_*L-G 2 javascript

当我执行以下语句时:

var string = "1 1 1 1 1 1 0 1 1"
console.log(string)
var strings = string.split(" ")
console.log(strings)
var numbers1 = strings.map(parseInt)
console.log(numbers1)
var numbers2 = strings.map(function(i){ return parseInt(i, 10) })
console.log(numbers2)
Run Code Online (Sandbox Code Playgroud)

我在控制台中获得以下输出:

1 1 1 1 1 1 0 1 1
["1", "1", "1", "1", "1", "1", "0", "1", "1"]
[1, NaN, 1, 1, 1, 1, 0, 1, 1]
[1, 1, 1, 1, 1, 1, 0, 1, 1]
Run Code Online (Sandbox Code Playgroud)

我想知道为什么第二个元素numbers1是NaN.除了这个之外,为什么它适用于所有其他元素?

Dan*_*ite 7

这是因为map传递了额外的参数.

Array.prototype.map = function(currentValue, index, array)
Run Code Online (Sandbox Code Playgroud)

所以当它在索引1时,它将1作为基数.