JavaScriptのNaNとisNaNはちょっと厄介です。
- 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