JavaScript:什么是 NaN、Object 或 Primitive
JavaScript: what is NaN, Object or primitive?
什么是NaN,对象或原语?
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 是相当罕见的。它是返回值 当数学函数失败时 (Math.sqrt(-1)) 或当函数尝试 解析一个数字失败(parseInt("blabla"))。
参考
想补充一些关于 NaN 的观察结果,让我感兴趣:
-
typeof(NaN)
返回'number'
,但isNaN(NaN)
返回true
有趣。
也
-
isNaN(10)
和isNaN('10')
都返回false
-
isNaN('')
返回false
,但isNaN('any alphabetical string')
返回true
-
isNaN(true)
和isNaN(false)
返回false
.因此,布尔值也被函数isNaN
视为一个数字。
相关文章:
- 函数未在Object.keys或Object.getOwnPropertyNames下列出,但可以调用
- delete在Object上效率低下,但在DOM Element's的数据属性,与null out相比
- 有没有一种方法可以列出Ember.Object的所有绑定
- 如何取消object.prototypes javascript的一个函数
- 为什么是文档.旧版应用程序中的DOM-object.properties为null
- 将*.js文件的内容放入Object中
- Object.prototype using 'this'
- 使用Object.create()的角度服务继承
- 如何使用object.assign()从其他对象引用基本对象属性
- 循环的数组推入在Object容器中具有不同的值
- reducers在redux中得到Function not Object,what'it’他错了
- JSON.stringify和Object.keys在同一个对象上产生不同的结果
- 在使用object.create创建的对象中使用super
- Join架构验证:Join.object定义数组中的有效键
- jquery打印[object XMLDocument]而不是文件内容
- ExtJS 4 Object.prototype fail
- JavaScript-从对象数组中输出随机OBJECT
- 为什么“{}+1”在Chrome和Firefox中排名第一,而字符串'[object object]1'
- 什么是“;原型;通过JavaScript中的Object Literal Notation创建的对象的链接
- JavaScript:什么是 NaN、Object 或 Primitive