为什么JavaScript说数字不是数字?

Ars*_*nko 28 javascript typeof nan

我有一段JavaScript代码,预计会为变量设置一个整数值.

有些东西坏了,所以当我尝试做的时候alert(A);,它会回来NaN.isNaN(A);返回true.但是,如果我alert(typeof(A));,它说number.

那么变量怎么可以是一个数字而不是一个数字呢?也许我误解了NaN究竟是什么?


编辑:感谢答案,我看到我错了,因为:

  • 的类型NaNNumber,
  • NaN是指"不是数字",这与"不是类型Number"不同,
  • 0/0是一个很好的例子NaN:它仍然是一个数字,但JavaScript(没有其他人)可以说零的实际值除以零.1/0另一方面,返回Infinity,这不是NaN.

And*_*yle 21

据我所知,该类的NaN一个标记实例Number代表了它所代表的数字结果 - 无法充分表示的数字结果.所以,0/0不是一个数字,因为它的意义NaN,但它一个Number在其类型方面.

也许它应该被称为NaRN(不是可表示的数字).

  • `1/0`是`Infinity`,而`Infinity`不是'NaN`.但我看到了我的问题的答案.我误解了"NaN"就像你说的那样,意味着"数字结果不能充分代表",而不是"不是"数字"类型". (2认同)

tva*_*son 14

如果您有一个变量并为其指定结果0/0,则该变量仍为数字类型,但该值未定义(不是数字).还有其他条件可以发生这种情况,但这说明了你所看到的.

  • 你确定除以零导致NaN而不是Inf吗?我认为0/0会导致NaN并尝试解析不代表数字的字符串. (2认同)