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

时间:2016-02-08 16:11:48

标签: javascript parseint

请考虑以下事项:

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

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

似乎此行为对错误/错误实例是唯一的。任何人都可以提供见解吗?

1 个答案:

答案 0 :(得分:11)

基本上,那是因为:

  • new Error().toString()会产生"Error"
  • parseInt("Error", 16)产生14(因为0xE14而解析器停在r)。

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