Javascript 为什么在错误时使用parseInt返回14?

Javascript 为什么在错误时使用parseInt返回14?,javascript,parseint,Javascript,Parseint,考虑以下几点: parseInt(new Array(), 10); // -> NaN parseInt(new Array(), 16); // -> NaN parseInt(new Error(), 10); // -> NaN parseInt(new Error(), 16); // -> 14 这种行为似乎是错误/错误实例所特有的。有人能提供见解吗?基本上,这是因为: newerror().toString()产生“Error”,并且 parseInt

考虑以下几点:

parseInt(new Array(), 10); // -> NaN
parseInt(new Array(), 16); // -> NaN

parseInt(new Error(), 10); // -> NaN
parseInt(new Error(), 16); // -> 14

这种行为似乎是错误/错误实例所特有的。有人能提供见解吗?

基本上,这是因为:

  • newerror().toString()
    产生
    “Error”
    ,并且
  • parseInt(“Error”,16)
    产生
    14
    (因为
    0xE
    14
    ,解析器停在
    r

另一方面,
new Array()
不会触发相同的行为,因为数组对象的
toString()
方法返回数组的内容,以逗号分隔,而不是类名。因此,
new Array().toString()
产生空字符串,
parseInt()
随后产生
NaN

首先,为什么在出错时使用parseInt?
parseInt([“E”],16)
也同样有效。类似地,
parseInt(false,16)
产生250(十六进制FA)。啊,这很有道理。非常感谢。