ParseInt有两个参数:string和radix(进制)。如果提供的radix(进制)为空或者为假值,进制(基数)默认设置为10。
parseInt('11'); => 11
parseInt('11', 2); => 3
parseInt('11', 16); => 17
parseInt('11', undefined); => 11 (radix(进制) 为假)
parseInt('11', 0); => 11 (radix(进制) 为假)
现在让我们一步一步地运行我们的示例。
['1', '7', '11'].map(parseInt); => [1, NaN, 3]
// 第一次迭代: val = '1', index = 0, array = ['1', '7', '11']
parseInt('1', 0, ['1', '7', '11']); => 1
由于0是假的,因此进制(基数)设置为默认值10。 parseInt()只接受两个参数,因此['1', '7', '11']会被 忽略。字符串'1'在10进制(基数)中的字符串表示数字1。
// 第二次迭代: val = '7', index = 1, array = ['1', '7', '11']
parseInt('7', 1, ['1', '7', '11']); => NaN
在进制(基数)为1系统中,符号'7'不存在。与第一次迭代一样,忽略最后一个参数。所以,parseInt()返回了NaN。
// 第三次迭代: val = '11', index = 2, array = ['1', '7', '11']
parseInt('11', 2, ['1', '7', '11']); => 3
在进制(基数)为2(二进制)系统中,符号'11'表示数字3,最后一个参数被忽略。