JavaScript - 数値がNaNであるかどうかを確認する方法

NaNはNot a Numberで、無効な数字を意味します。たとえば、次のような誤った演算の結果は NaN を返します。

let n1 = 0 / 0;
let n2 = 10 / 'a';

console.log(n1);  // NaN
console.log(n2);  // NaN

1. Number.isNaN() で NaN かどうかを確認する

Number.isNaN()は、引数として渡された変数がNumber型でNaNの場合はtrue返します。それ以外はすべて false を返します。

let num = 0 / 0;

if (Number.isNaN(num)) {
  console.log('num is NaN');
}

// output: num is NaN

たとえば、Number型ではない変数に対してNaNをチェックすると、次のようにfalseが返されます。

console.log(Number.isNaN('string'));  // false
console.log(Number.isNaN(undefined)); // false
console.log(Number.isNaN(null));      // false
console.log(Number.isNaN([]));        // false
console.log(Number.isNaN({}));        // false

2. isNaN() で NaN かどうかを確認する

isNaN()も、以下のように引数として渡された変数がNaNであることを確認できます。

let num = 0 / 0;

if (isNaN(num)) {
  console.log('num is NaN');
}

ところで問題は、 number 以外のタイプをチェックするときにも true が返されることがあります。したがって、 isNaN() は使わず、 Number.isNaN() を使うべきです。

console.log(isNaN(0 / 0));     // true
console.log(isNaN('string'));  // true
console.log(isNaN(undefined)); // true
console.log(isNaN({}));        // true
console.log(isNaN(null));      // false
console.log(isNaN([]));        // false

3. Number.NaN === Number.NaN 表現を使用しない

=== を使用して NaN を NaN と比較する表現は使用しないでください。 JavaScriptでは、NaNはNaNと等しくないと判断され、falseを返します。

console.log(Number.NaN === Number.NaN);   // false

Related Posts

codechachaCopyright ©2019 codechacha