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

什么是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属性来手动抛出错误NaN。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

JavaScript 教程