Skip to content

["1", "2", "3"].map(parseInt) 解析

实际结果

运行 ["1", "2", "3"].map(parseInt) 会得到 [1, NaN, NaN]

原因分析

  1. map() 会给回调函数传递三个参数:

    • 当前元素值
    • 当前元素索引
    • 整个数组
  2. 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]