JavaScriptでNaN(Not a Number)を判定する際、`Number.isNaN()`メソッドは非常に便利です。このメソッドを使用することで、値がNaNであるかどうかを正確に判定することができます。

Number.isNaN()の基本的な使い方

const result1 = Number.isNaN(NaN);      // true
const result2 = Number.isNaN(123);      // false
const result3 = Number.isNaN('hello');  // false

`Number.isNaN()`は引数として渡された値がNaNであるかどうかを判定し、真偽値(true/false)を返します。

グローバルisNaN()との違い

JavaScriptには`isNaN()`というグローバル関数も存在しますが、`Number.isNaN()`とは動作が異なります。

// グローバルisNaN()の場合
isNaN('hello');        // true
isNaN(undefined);      // true

// Number.isNaN()の場合
Number.isNaN('hello'); // false
Number.isNaN(undefined); // false

`Number.isNaN()`は、より厳密にNaNを判定します。一方、グローバルの`isNaN()`は引数を数値に変換してから判定を行うため、予期せぬ結果となることがあります。

実践的な使用例

function divideNumbers(a, b) {
  const result = a / b;
  
  if (Number.isNaN(result)) {
    return '計算できません';
  }
  
  return result;
}

console.log(divideNumbers(10, 2));  // 5
console.log(divideNumbers(10, 0));  // Infinity
console.log(divideNumbers(0, 0));   // '計算できません'

ブラウザ互換性

`Number.isNaN()`は比較的新しいメソッドですが、現代の主要なブラウザでは広くサポートされています。IE11以前のブラウザでは動作しないため、必要に応じてポリフィルを使用します。

if (!Number.isNaN) {
  Number.isNaN = function(value) {
    return value !== value;
  };
}

まとめ

  • `Number.isNaN()`は値がNaNかどうかを厳密に判定
  • グローバルの`isNaN()`より信頼性が高い
  • 数値計算の結果を検証する際に特に有用
  • モダンブラウザで広くサポート

`Number.isNaN()`を使用することで、より安全で信頼性の高いNaN判定を実装することができます。数値計算を扱うアプリケーションでは、このメソッドを積極的に活用することをお勧めします。