JavaScript NaN 语法
NaN(Not a Number)是 JavaScript 中的一个特殊值,它表示一个无效的、不是数字的结果。当一个数学运算无法返回一个有效数字时,就会返回 NaN。
语法:
const result = NaN;说明:
当以下情况发生时,会产生 NaN 值:
- 非数字值参与数学运算(除了加法)。
- 无法解析的数字字符串。
- 0 除以 0。
- 某些数学函数的参数无效。
NaN 的一个非常重要的特性是:它不等于任何值,包括它自己。比如:
console.log(NaN == NaN); // false
console.log(NaN === NaN); // false因此,如果想要判断一个值是否为 NaN,我们不能使用 “==” 或 “===” 。
提示:
- NaN 是 “Not a Number(非数字)” 的简写。
- NaN 是一个全局属性(顶层对象的属性),可以直接使用而无需创建实例。
- NaN 是一个原始数据类型,属于 number 类型。尽管它代表 “非数字”,但 typeof NaN 的结果却是 "number"。
JavaScript NaN 摘要
| 属于 | JavaScript 全局对象 |
|---|---|
| 使用频率 | 高 |
| 官方文档 | 查看 |
| MDN | 查看 |
JavaScript NaN 示例
接下来,我们通过几个简单的例子来讲解一下 JavaScript NaN 是如何使用的。
示例 1:数学运算失败
const result1 = 10 * "Apple";
const result2 = "100" - 50;
const result3 = 0 / 0;
console.log(result1);
console.log(result2);
console.log(result3);运行结果如下。
NaN
50
NaN分析:
当一个非数字值(除了加法运算中的字符串)参与数学运算时,结果会是 NaN。在这个例子中:
10 * "Apple":"Apple" 是一个字符串,无法参与乘法运算,因此返回 NaN。"100" - 50:在减法运算中,JavaScript 会尝试将字符串 "100" 转换为数字 100,因此结果是 50。0 / 0:这是一个数学上未定义的操作,因此返回 NaN。
示例 2:无法解析的数字字符串
const result1 = parseInt("100px");
const result2 = parseInt("Hello World");
const result3 = parseFloat("3.14pi");
console.log(result1);
console.log(result2);
console.log(result3);运行结果如下。
100
NaN
3.14分析:
当我们尝试将无法转换为数字的字符串用 parseInt() 或 parseFloat() 函数进行转换时,会返回 NaN。在这个例子中:
parseInt("100px"):parseInt() 会从字符串的开头开始解析,直到遇到第一个非数字字符 p,因此它成功解析并返回 100。parseInt("Hello World"):字符串开头是 H,无法被解析为数字,因此返回 NaN。parseFloat("3.14pi"):与 parseInt() 类似,它会解析到 p,返回 3.14。
示例 3:判断是否 NaN 值
console.log(Number.isNaN(NaN));
console.log(Number.isNaN(360));
console.log(Number.isNaN(Infinity));
console.log(Number.isNaN("123"));
console.log(Number.isNaN({}));运行结果如下。
true
false
false
false
false分析:
如果想要判断某个值是否为 NaN 值,我们应该使用 Number.isNaN() 静态方法,而不是使用 isNaN() 这个全局函数。
这是因为 isNaN() 函数会出现怪异行为,导致结果并不符合预期。小伙伴们可以查看以下两篇文章来深入了解:
