什么是 NaN、Object 或 primitive?
NaN - 不是数字
这是一个原始人。您可以通过多种方式查看:
typeof NaN
给出“数字”,而不是“对象”。添加一个属性,它就消失了。
NaN.foo = "hi"; console.log(NaN.foo) // undefined
NaN instanceof Number
给出 false(但我们知道它是一个数字,所以它必须是原始值)。将 NaN 作为对象并没有什么意义,因为像
0 / 0
这样的表达式需要产生 NaN
,而数学运算总是产生基元。将 NaN 作为对象也意味着它不能充当虚假值,而在某些情况下它确实如此。
NaN
是原始数字值。就像1
、2
等
NaN 是全局对象的属性。
NaN 的初始值为 Not-A-Number — 与值相同 数字.NaN。在现代浏览器中,NaN 是不可配置的, 不可写的属性。即使不是这种情况,也要避免 覆盖它。
在程序中很少使用 NaN。是返回值 当数学函数失败时 (Math.sqrt(-1)) 或当函数试图 解析数字失败(parseInt(“blabla”))。
想补充一些让我感兴趣的关于 NaN 的观察:
另外, 2. isNaN(10) 和isNaN('10') 都返回false。 3. isNaN('') 返回 false,但是 isNaN('在这里输入任何字符串值但空字符串') 返回 true。