JavaScript:什么是 NaN、对象或原始类型?

问题描述 投票:0回答:4

什么是 NaN、Object 或 primitive?

NaN - 不是数字

javascript nan
4个回答
14
投票

这是一个原始人。您可以通过多种方式查看:

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

  • 添加一个属性,它就消失了。

    NaN.foo = "hi"; console.log(NaN.foo) // undefined

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

将 NaN 作为对象并没有什么意义,因为像

0 / 0
这样的表达式需要产生
NaN
,而数学运算总是产生基元。将 NaN 作为对象也意味着它不能充当虚假值,而在某些情况下它确实如此。


7
投票

NaN
是原始数字值。就像
1
2


2
投票

NaN 是全局对象的属性。

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

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

参考


0
投票

想补充一些让我感兴趣的关于 NaN 的观察:

  1. typeof(NaN) 返回“数字”,但 isNaN(NaN) 返回 true(有趣)。

另外, 2. isNaN(10) 和isNaN('10') 都返回false。 3. isNaN('') 返回 false,但是 isNaN('在这里输入任何字符串值但空字符串') 返回 true。

© www.soinside.com 2019 - 2024. All rights reserved.