为什么parseInt(“ BG”,16)返回11而不是NaN?

时间:2019-06-21 03:26:06

标签: javascript

我使用parseInt将字符串转换为十六进制值,但是parseInt("BG", 16)的结果为11。我认为它一定是NaN。这是怎么回事?

2 个答案:

答案 0 :(得分:2)

parseInt的第二个参数是基数。在基数16中,“ BG”中的“ B”对应于11(9 = 9,10 = A,11 = B),并且G不在基数16的范围内(0-9和AF),因此它被忽略。

因此,结果与parseInt('B', 16)相同:

console.log(parseInt('B', 16));

答案 1 :(得分:1)

  

parseInt函数将其第一个参数转换为字符串,进行解析   该字符串,然后返回整数或NaN。

parseInt

  

如果parseInt遇到一个字符,该字符不是   指定的基数,它将忽略该基数以及所有后续字符,并且   返回解析到该点的整数值。 parseInt截断   数字到整数值。允许使用前导和尾随空格。

在第一个示例B中可以将其解析为整数,以便返回,但是在第二个示例中,G超出十六进制值的范围,因此它返回NaN

console.log(parseInt("BG", 16))
console.log(parseInt("GB", 16))