在 JavaScript 中檢查一個值是否為 NaN

Alex Dulcianu 2023年1月30日 2022年5月1日
  1. 使用內建 isNaN() 函式檢查 JavaScript 中的值是否為 NaN
  2. 結合 isNaN()parseFloat() 處理空字串
  3. 在 JavaScript 中使用比較運算子檢查值是否為 NaN
在 JavaScript 中檢查一個值是否為 NaN

JavaScript 中的 NaN 值可能會使該語言的新手感到困惑,尤其是因為它們經常與 undefinedNull 值混淆。NaNNot-a-Number 的首字母縮寫詞,其目的非常明顯。

JavaScript 可能難以區分不同的未定義值。在處理 NaN 值時,布林運算也有一些你必須注意的問題。

在某些情況下,必須檢查某個值是否屬於 NaN 型別。因此,這裡有一些方法可以用來檢查值是否為 NaN

使用內建 isNaN() 函式檢查 JavaScript 中的值是否為 NaN

執行此檢查的最有用的方法之一是使用標準庫方法 isNaN()。如果你給它的值是 NaN,那麼這個函式的返回值將是 true。這是一個如何在程式碼中使用它的示例:

let myvar_1 = "dog";
let myvar_2 = "2";

console.log(isNaN(myvar_1));
console.log(isNaN(myvar_2));

輸出:

true
false

結合 isNaN()parseFloat() 處理空字串

如上所述,你必須注意一些問題。其中之一涉及空字串,當使用 isNaN() 函式時將返回 false。這是一個例子:

let myvar_1 = "";

console.log(isNaN(myvar_1));

輸出:

false

自然,在這種情況下,這可能不是你想要的結果。為了正確處理這些情況,你可以在 isNaN() 函式中新增 parseFloat() 方法,如下所示:

let myvar_1 = "";

console.log(isNaN(parseFloat(myvar_1)));

輸出:

true

在 JavaScript 中使用比較運算子檢查值是否為 NaN

下面的方法比上面詳述的方法更快,而且它需要的程式碼也更少。另一方面,它有點令人困惑,更不用說它可能很難正確維護和記錄。

簡而言之,JavaScript NaN 值是唯一不等於自身的值。正因為如此,一個簡單的比較可以很容易地告訴你你感興趣的值是否是 NaN。下面是它的工作原理:

let myvar_1 = NaN;
let myvar_2 = "dog";
let myvar_3 = "2";
 
console.log(myvar_1 !== myvar_1);
console.log(myvar_2 !== myvar_2);
console.log(myvar_3 !== myvar_3);

輸出:

true
false
false

此方法與 isNaN() 函式的工作方式不同。在前面的示例中,可以解析為數字的字串被視為數字。如果你使用比較運算子,那麼相同的字串將不會被解析為數字。如果該值明確定義為 NaN,則此特定示例僅返回 true

兩種方法都有其優點,但你應該知道它們的操作方式不同,因此我們應該避免將它們混合在同一個程式碼庫中。

相關文章 - JavaScript Variable