["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]