为什么JavaScript说数字不是数字?
这个问题在这里已经有了答案:
据我了解, NaN
是Number
类的一个哨兵实例,它恰好代表了它所代表的数值结果 - 无法充分表示的结果。 所以0/0
不是一个数字,因为它是NaN
,但是它的类型是一个Number
。
也许它应该被称为NaRN(不是可表示数字)。
如果您有一个变量并将其分配给0/0的结果,该变量仍然是数值类型,但该值未定义(不是数字)。 还有其他条件可能发生,但这说明了你所看到的。
您正在将对象的类型与值混淆。 NaN
是number
类型对象可以分配给的特定值,例如,在零除零的情况下或尝试从不代表数字的字符串转换数字时。