为何NaN的类型为number?寻求客观事实而非主观观点
为什么NaN的类型是number?
我知道这问题乍听像主观问题,但我不是要个人观点——我自己也能给出观点。
这问题不是以下两个问题的重复:
- 不是“为何typeof NaN返回'number'?”的重复:一是那问题接受包括主观推理在内的任何推理,而我只想要客观答案;二是那问题涉及比较相关内容,和我的问题无关。
- 不是“NaN是数字吗?”的重复:因为那问题没限定只接受客观答案,而我只寻求客观答案。
我想知道NaN属于number类型的客观原因,验证这一现象的代码如下:
console.log(typeof NaN);
我自己能给出的最佳解释不是客观解释,所以不能算答案。我的个人看法是:NaN是数值运算的结果,把它归为number类型能确保数值运算满足闭包性,比如a/b的结果类型永远是number。示例代码:
console.log([0/0, isNaN(0/0), typeof (0/0)])
所以我自己的主观解释是:NaN是代表“非数字”的特殊数字,是数值运算产生的无意义结果,归为number类型是为了保证数值运算的闭包性。
但我想确认有没有客观原因——可能我的主观解释和客观原因一致,也可能有其他客观原因导致我的观点错误,或者这只是约定俗成没有客观原因。
我不要个人观点,只需要事实依据。任何反馈都欢迎,包括反对票,只要能帮我加深对这个问题的理解。
内容的提问来源于stack exchange,提问作者Lajos Arpad
相关产品推荐
相关产品推荐

