7

什么是 NaN、对象或原语?

NaN - 不是数字

4

3 回答 3

11

这是一个原始的。您可以通过多种方式进行检查:

  • typeof NaN给出“数字”,而不是“对象”。

  • 添加一个属性,它就会消失。NaN.foo = "hi"; console.log(NaN.foo) // undefined

  • NaN instanceof Number给出 false (但我们知道它是一个数字,所以它必须是一个原语)。

NaN 成为一个对象并没有真正的意义,因为像0 / 0需要这样的表达式需要导致NaN,而数学运算总是会导致原语。将 NaN 作为对象也意味着它不能充当虚假值,在某些情况下它会这样做。

于 2012-05-08T12:32:22.260 回答
5

NaN是一个原始数字值。就像1,2等。

于 2012-05-08T12:23:26.050 回答
1

NaN 是全局对象的属性。

NaN 的初始值为 Not-A-Number — 与 Number.NaN 的值相同。在现代浏览器中,NaN 是不可配置、不可写的属性。即使不是这种情况,也要避免覆盖它。

在程序中很少使用 NaN。它是数学函数失败 (Math.sqrt(-1)) 或尝试解析数字的函数失败 (parseInt("blabla")) 时的返回值。

参考

于 2012-05-08T12:29:13.783 回答