为什么parseInt('dsff66',16)返回13?
- 论坛
- 为什么parseInt('dsff66',16)返回13?
14 浏览
为什么parseInt('dsff66',16)返回13?
今天在JavaScript中,我偶然遇到一个奇怪的(我认为是奇怪的)情况。我将一个非十六进制的字符串传递给parseInt函数,并指定基数为16,但是...我得到了结果。
我本来期望这个函数会抛出某种异常,或者至少返回NaN,但是它成功解析了字符串,并返回了一个整数。
我的调用是:
var parsed = parseInt('dsff66', 16); // 注意第一个参数中的's' document.write(parsed);
结果是:13
。
我注意到它会在第一个不属于第二个参数指定的数字系统的字符处“停止”解析,所以调用parseInt('fg',16)
会得到15
作为结果。
在我看来,它应该返回NaN。有人能解释为什么它不会返回NaN吗?为什么有人希望这个函数表现出这样的行为(即使它不是字符串的精确表示,也返回一个整数)?