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.