JavaScript:什么是 NaN、Object 或 Primitive

JavaScript: what is NaN, Object or primitive?

本文关键字:Object Primitive NaN 什么 JavaScript      更新时间:2023-09-26

什么是NaN,对象或原语?

NaN - 不是数字

这是一个原始的。您可以通过多种方式进行检查:

  • typeof NaN给出的是"数字",而不是"对象"。

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

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

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

NaN是一个

原始数字值。就像12等一样。

NaN 是全局对象的属性。

NaN 的初始值是 Not-A-Number — 与 在现代浏览器中,NaN 是不可配置的, 不可写财产。即使不是这种情况,也要避免 覆盖它。

在程序中使用 NaN 是相当罕见的。它是返回值 当数学函数失败时 (Math.sqrt(-1)) 或当函数尝试 解析一个数字失败(parseInt("blabla"))。

参考

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

  1. typeof(NaN)返回'number',但isNaN(NaN)返回true

有趣。

  1. isNaN(10)isNaN('10')都返回false

  2. isNaN('')返回false,但isNaN('any alphabetical string')返回true

  3. isNaN(true)isNaN(false)返回false.因此,布尔值也被函数isNaN视为一个数字。