请考虑以下事项:
parseInt(new Array(), 10); // -> NaN
parseInt(new Array(), 16); // -> NaN
parseInt(new Error(), 10); // -> NaN
parseInt(new Error(), 16); // -> 14
似乎此行为对错误/错误实例是唯一的。任何人都可以提供见解吗?
答案 0 :(得分:11)
基本上,那是因为:
new Error().toString()
会产生"Error"
和parseInt("Error", 16)
产生14
(因为0xE
是14
而解析器停在r
)。另一方面,new Array()
不会触发相同的行为,因为数组对象的toString()
方法返回数组的内容,用逗号分隔,而不是类名。因此,new Array().toString()
会产生空字符串,parseInt()
会产生NaN
。