2012-05-08 60 views
5

什么是NaN,Object或primitive?JavaScript:什么是NaN,Object或primitive?

的NaN - 非数

+0

NaN是Number类的一个属性 – rsplak

+1

'typeof NaN ==“number”' –

+1

NaN与NULL类似。 你可以参考这个[SO帖子] [1] [1]:http://stackoverflow.com/questions/559792/what-is-the-reserved-keyword-for-nan -in-javascript –

回答

4

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

1

NaN是全局对象的属性。

NaN的初始值是Not-A-Number-与 Number.NaN的值相同。在现代浏览器中,NaN是不可配置的, 不可写属性。即使情况并非如此,请避免 覆盖它。

在程序中使用NaN相当罕见。当Math函数失败时(Math.sqrt(-1))或尝试对数字进行解析的函数失败时(parseInt(“blabla”)),返回值为 。

Reference

8

这是一个原始的。您可以检查在许多方面:

  • typeof NaN给“号,”而不是“对象”。

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

  • NaN instanceof Number给出了错误(但我们知道它是一个数字,所以它必须是原始的)。

它不会真正意义楠是一个对象,因为像0/0表现需要引起NaN,并且数学运算总是导致原语。把NaN作为一个对象也意味着它不能作为一个虚假的价值,它在某些情况下也是如此。

相关问题