NaN

NaN 是一个全局对象的属性。

表示数据类型不是数字,是一个特殊的number


NaN === NaN; // false,与任何值都不相等,包括自己
Number.NaN === NaN; // false
isNaN(NaN); // true
isNaN(Number.NaN); // true
typeof(NaN)); //number


[url]https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/NaN[/url]
### 关于 `NaN` 的理解 `NaN` 表示“不是一个数”,通常用于表示未定义或不可表示的数值结果。无论是在 JavaScript 还是 Python 中,`NaN` 都具有独特的性质。 #### 特殊属性 - **自不相等**:`NaN` 与任何值(包括其自身)都不相等。这意味着直接使用严格等于 (`===`) 或松散等于 (`==`) 来比较两个 `NaN` 值总是返回 `false`[^3]。 ```javascript console.log(NaN === NaN); // 输出: false console.log(NaN == NaN); // 输出: false ``` #### 判断方法 由于上述特性,在编程语言中提供了特定的方法来检测 `NaN`: - **JavaScript** - 使用全局函数 `isNaN()` 可以测试传入的参数是否为 `NaN` 或者能否成功转成数字形式下的 `NaN`[^2]。 ```javascript console.log(isNaN("hello")); // true, 因为 "hello" 转换成数字后得到 NaN console.log(Number.isNaN(0 / 0)); // true, 此处直接给出 NaN ``` - 更推荐的方式是利用 ES6 引入的新 API `Number.isNaN()`,它只会在输入确实为 `NaN` 时不加转换地返回真值。 ```javascript console.log(Number.isNaN("hello")); // false, 字符串不会自动尝试转换 console.log(Number.isNaN(parseFloat('a'))); // true, parseFloat 返回 NaN ``` - **Python** - 对应库如 NumPy 提供了统一的标准名称 `np.nan` 并且所有大小写变体均指向同一对象实例[^4]。 ```python import numpy as np print(np.nan is np.NaN is np.NAN) # True ``` 对于想要验证某个变量是否确切代表浮点型中的非数值状态而言,应该优先考虑这些专门设计的功能而非简单的相等性检查。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值