29.1Standard Library / isNaN

`Number.isNaN`を使用する

グローバルな`isNaN`の代わりに`Number.isNaN`を使用します。グローバルな`isNaN`は数でない値を数値に型変換するため、予期せぬ結果になることがあります。

グローバルな `isNaN()` は、引数をまず数値に変換しようとします。`isNaN('foo')` は、`'foo'` を数値に変換しようとして `NaN` になるため、`true` を返します。これは「数値に変換できないか?」をチェックしているようなものです。一方、`Number.isNaN()` は型変換を行わず、引数が純粋に `NaN` という値であるかだけをチェックします。これにより、「この値は `NaN` か?」というより厳密で意図通りのチェックが可能になります。

❌ Bad
// bad
isNaN('1.2'); // false
isNaN('1.2.3'); // true
✅ Good
// good
Number.isNaN('1.2.3'); // false
Number.isNaN(Number('1.2.3')); // true