为什么在Error返回14时使用parseInt?

sav*_*ax0 4 javascript parseint

考虑以下:

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

parseInt(new Error(), 10); // -> NaN
parseInt(new Error(), 16); // -> 14
Run Code Online (Sandbox Code Playgroud)

看起来这种行为对错误/错误实例是唯一的.谁能提供洞察力?

Fré*_*idi 11

基本上,那是因为:

  • new Error().toString()产量"Error",和
  • parseInt("Error", 16)yield 14(因为0xE14和解析器停在r).

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