JavaScriptNaNisNaNはちょっと厄介です。

  • NaNはNot-a-Numberの略称
  • 数値ではないがNumber型の値を表現
  • NaNはどの値とも(NaN自身に対しても)一致しない
  • Number.isNaNメソッドを使うことでNaNの判定可能

console.log(0 / 0); // => NaN
console.log(Math.sqrt(-1)); // => NaN
console.log(100 * "abc");  // => NaN

console.log(NaN === NaN); // => false   自分自身とも一致しない
console.log(typeof NaN); // => "number"   Number型型

console.log(Number.isNaN(8)); // => false
console.log(Number.isNaN(NaN)); // => true

console.log(Number.isNaN(undefined)); // => false
console.log(isNaN(undefined)); // => true


最後の2行の結果が異なります。注意注意! Number.isNaN を使うのが無難ですね。


参考

2022/11/09