parseInt 基数问题
问题
如下代码打印出什么?
js
;['1', '2', '3'].map((element, index) => parseInt(element, index))
到这里其实我们就能看出迭代处理每一个元素,而 parseInt 就是具体处理这个元素的方法。Number.parseInt() 静态方法解析一个字符串参数并返回一个指定基数的整数。语法如下:
js
Number.parseInt(string)
Number.parseInt(string, radix)
radix 可选
2 到 36 之间的整数,表示 string 的基数(数学记数系统中的基)。
如果 radix 为 undefined 或 0,则 radix 将被默认设置为 10,除非该数字以码元对 0x 或 0X 开头,在这种情况下,radix 将被默认设置为 16。
如果 radix 小于 2 或大于 36,或第一个非空白字符不能转换为数字,则返回 NaN。
根据以上条件说明我们可以得出 [1, NaN, ?]
我们再看下面一个案例:
js
parseInt('546', 2) // NaN 除了“0、1”外,其他数字都不是有效二进制数字
因为二进制的值只能是"0"和“1“,显然“3”不符合要求,所以也是 NaN
所以最终结果就是: [1, NaN, NaN]