JavaScript 中 Number 对象的 NaN 属性是什么?


在 JavaScript 中,NaN 属性是一个表示“非数字”的特殊值。它是 Number 对象的一个属性,可以使用 Number.NaN 访问。

NaN 属性通常是由于无法产生有意义结果的操作而产生的。例如,0 除以 0 或尝试解析无效数字都会产生 NaN。

以下是一些会产生 NaN 的操作示例:

Math.sqrt(-1);   // NaN
0/0;             // NaN
parseInt("foo"); // NaN

需要注意的是,**NaN** 不等于任何值,包括它自身。因此,如果要检查某个值是否为 NaN,不能使用 == 或 === 运算符。而应该使用 **isNaN()** 函数,该函数专门用于此目的。

以下是 isNaN() 的使用方法示例:

if (isNaN(someValue)) {
   console.log("someValue is Not a Number");
}

语法

以下是表示非数字的语法:

NaN
Number.NaN

我们可以从 Number 对象调用 NaN,所以即使 NaN 表示非数字,它也是 Number 对象的一个属性。

有时严格要求为操作传递一个数字,在这种情况下,我们可以抛出一个 NaN 错误,以向用户显示他们只能输入数字值。

示例

您可以尝试运行以下示例,以了解如何使用 NaN:

<html>
<head>
   <script>
      function showValue() {
         var dayOfMonth = 50;
         if (dayOfMonth < 1 || dayOfMonth > 31) {
            dayOfMonth = Number.NaN
            alert("Day of Month must be between 1 and 31.")
         }
         Document.write("Value of dayOfMonth : " + dayOfMonth );
      }
   </script>
</head>
<body>
   <p>Click the following to see the result:</p>
   <form>
      <input type="button" value="Click Me" onclick="showValue();" />
   </form>
</body>
</html>

示例

让我们创建一个函数 **sum**,它接受两个参数并将它们转换为整数,以便如果用户输入十进制数字或字符串形式的数字,它将自动将其转换为整数并对这些整数求和并打印结果。然后我们将通过传递一些参数来调用该函数。

<html>
<body>
   <h2> NaN property of a Number object in JavaScript </h2>
   <div id = "output"> </div>
   <script>
      function sum(a, b) {
         x = parseInt(a);
         y = parseInt(b);
         result = x + y;
         return result;
      }
      let outputDiv = document.getElementById("output");
      outputDiv.innerHTML += "Sum of 2 and 4.0 = " + sum(2, 4.0) + "<br>";
      outputDiv.innerHTML += "Sum of 2 and 4 = " + sum("2", 4) + "<br>";
      outputDiv.innerHTML += "Sum of Two and 4 = " + sum("Two", 4) + "<br>";
   </script>
</body>
</html>

在这里,当我们传递整数、包含整数的字符串或十进制值整数时,我们将得到相同的结果,因为所有值都可以被解析为整数并且可以是有效的数字;但是当我们传递字母字符串时,我们将得到 NaN 错误,这意味着我们传递的值不是数字。

示例

让我们修改上面的函数,我们希望此函数不允许使用十进制整数甚至字符串中的整数,如果函数获得的值严格不是数字类型,我们将控制台输出 NaN 以显示一条消息,指出输入的数字不是数字。

<html>
<body>
   <script>
      function sum(a, b) {
         if (typeof (a) === "number" && typeof (b) === "number") {
            document.write(a + b);
         } else {
            document.write(NaN);
         }
      }
      sum("2", 4);
   </script>
</body>
</html>

如果 JavaScript 能够将数字从一种形式转换为另一种形式(只要它属于数字类别),但它无法将它们转换为另一种所需的形式,即输入的数字在 JavaScript 中不是数字类型,那么 JavaScript 将返回一个错误 NaN,表示“非数字”。有趣的是,NaN 也是 Number 的一个对象,我们可以使用 *Number.NaN* 属性访问它。我们还可以使用 *Number.NaN* 属性或直接传递 NaN 来手动抛出 NaN 错误。

更新于:2023年1月5日

浏览量:508

启动您的 职业生涯

完成课程后获得认证

开始学习
广告
© . All rights reserved.