Open RainZhai opened 4 years ago
['1', '7', '11'].map(parseInt); => [1, NaN, 3] // 第一次第一次迭代 index = 0, array = ['1', '7', '11'] parseInt('1', 0, ['1', '7', '11']); => 1 // 第二次迭代 index = 1, array = ['1', '7', '11'] parseInt('7', 1, ['1', '7', '11']); => NaN // 第三次迭代, index = 2, array = ['1', '7', '11'] parseInt('11', 2, ['1', '7', '11']); => 3
[‘1’, ‘7’, ‘11’].map(parseInt) 不能按预期工作,是因为 map 在每次迭代时都会将三个参数传递到 parseInt() 中。第二个参数 index 作为 radix 参数传递给 parseInt。因此,数组中的每个字符串都使用不同的基数进行解析。‘7’ 按照基数 1 进行解析,即 NaN;‘11’ 按照基数 2 进行解析,即 3。‘1’ 按照默认基数 10 进行解析,因为它的索引 0 是假。
因此,下面的代码能按预期工作: ['1', '7', '11'].map(numStr => parseInt(numStr));
[‘1’, ‘7’, ‘11’].map(parseInt) 不能按预期工作,是因为 map 在每次迭代时都会将三个参数传递到 parseInt() 中。第二个参数 index 作为 radix 参数传递给 parseInt。因此,数组中的每个字符串都使用不同的基数进行解析。‘7’ 按照基数 1 进行解析,即 NaN;‘11’ 按照基数 2 进行解析,即 3。‘1’ 按照默认基数 10 进行解析,因为它的索引 0 是假。
因此,下面的代码能按预期工作: ['1', '7', '11'].map(numStr => parseInt(numStr));