JavaScript NaN 函数

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() 函数会出现怪异行为,导致结果并不符合预期。小伙伴们可以查看以下两篇文章来深入了解:

JavaScript Number.isNaN()

JavaScript isNaN()

上一篇: null

下一篇: Infinity

给站长反馈

绿叶网正在不断完善中,小伙伴们如果发现任何问题,还望多多给站长反馈,谢谢!

邮箱:lvyenet@vip.qq.com

「绿叶网」服务号
绿叶网服务号放大
关注服务号,微信也能看教程。
绿叶网服务号