["1", "2", "3"].map(parseInt)
解析
实际结果
运行 ["1", "2", "3"].map(parseInt)
会得到 [1, NaN, NaN]
。
原因分析
map()
会给回调函数传递三个参数:- 当前元素值
- 当前元素索引
- 整个数组
parseInt()
接受两个参数:- 要解析的字符串
- 基数(进制,范围是 2-36)
所以实际执行的是:
javascript
parseInt("1", 0) // 1 (0被视为默认值/十进制)
parseInt("2", 1) // NaN (基数必须是2-36)
parseInt("3", 2) // NaN (3在二进制中无效)
正确写法
如果想正确地将所有元素转换为数字,应该使用:
javascript
["1", "2", "3"].map(Number) // [1, 2, 3]
或者明确指定回调函数:
javascript
["1", "2", "3"].map(str => parseInt(str, 10)) // [1, 2, 3]