为什么在错误 return 14 上使用 parseInt?
Why does using parseInt on Error return 14?
考虑以下几点:
parseInt(new Array(), 10); // -> NaN
parseInt(new Array(), 16); // -> NaN
parseInt(new Error(), 10); // -> NaN
parseInt(new Error(), 16); // -> 14
似乎此行为是 Error/instances 错误所独有的。谁能提供见解?
基本上,那是因为:
new Error().toString()
产生 "Error"
,
parseInt("Error", 16)
产生 14
(因为 0xE
是 14
并且解析器停止在 r
)。
另一方面,new Array()
不会触发相同的行为,因为数组对象的 toString()
方法 returns 数组的内容,用逗号分隔,而不是 class名字。因此,new Array().toString()
生成空字符串,parseInt()
随后生成 NaN
.
考虑以下几点:
parseInt(new Array(), 10); // -> NaN
parseInt(new Array(), 16); // -> NaN
parseInt(new Error(), 10); // -> NaN
parseInt(new Error(), 16); // -> 14
似乎此行为是 Error/instances 错误所独有的。谁能提供见解?
基本上,那是因为:
new Error().toString()
产生"Error"
,parseInt("Error", 16)
产生14
(因为0xE
是14
并且解析器停止在r
)。
另一方面,new Array()
不会触发相同的行为,因为数组对象的 toString()
方法 returns 数组的内容,用逗号分隔,而不是 class名字。因此,new Array().toString()
生成空字符串,parseInt()
随后生成 NaN
.