NaN是对象还是原始类型?
NaN - 非数字
这是一个原始值。有多种方式可以进行检查:
typeof NaN
返回的结果是"number",而不是"object"。
添加属性后,它会消失。NaN.foo = "hi"; console.log(NaN.foo) // undefined
NaN instanceof Number
的结果是false(但我们知道它是一个数字,所以它必须是一个原始值)。
如果 NaN 是一个对象,会让人感到迷惑,因为像 0 / 0
这样的表达式需要得到 NaN
的结果,而且数学运算总是产生原始值。如果将 NaN 定义为一个对象,也意味着它不能在某些情况下充当假值。
NaN
是一个原始的数字值。就像1
,2
等一样。
想要添加一些关于 NaN 的观察,这让我感到很有趣:
typeof(NaN)
返回'number'
,但是isNaN(NaN)
返回true
有趣。
另外,
isNaN(10)
和isNaN('10')
都返回false
isNaN('')
返回false
,但是isNaN('任何字母字符串')
返回true
isNaN(true)
和isNaN(false)
都返回false
。所以布尔值也被isNaN
函数视为数字。
typeof NaN == "number"
- Michael BerkowskiNaN
也是全局对象的一个属性,两者的值都为NaN
。 - Andy ENaN
的更多信息。 - Felix Klingnull
实际上是一种类型,只有一个值:null
。 - kapa