在 JavaScript 中檢查一個值是否為 NaN
Alex Dulcianu
2023年10月12日
-
使用內建
isNaN()
函式檢查 JavaScript 中的值是否為NaN
-
結合
isNaN()
與parseFloat()
處理空字串 -
在 JavaScript 中使用比較運算子檢查值是否為
NaN
JavaScript 中的 NaN
值可能會使該語言的新手感到困惑,尤其是因為它們經常與 undefined
或 Null
值混淆。NaN
是 Not-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
。
兩種方法都有其優點,但你應該知道它們的操作方式不同,因此我們應該避免將它們混合在同一個程式碼庫中。