JavaScriptにおけるNaNとの比較
from Effective JavaScript
等値性評価演算子(==と===)をNaNに対して使用してその値がNaNであるかどうかを判定することはできません。NaN == NaNとNaN === NaNはどちらもfalse と評価されるからです。
isNaN() - JavaScript | MDN
isNaNの引数は判定前に数値に暗黙の型変換が行われる
code:js
const nan = NaN
nan === NaN // false
isNaN(nan) // true
from JavaScriptのDate型でInvalid Dateを判別する
isNaNがややこしい…
もし引数がNaNであるならばtrueを返し、そうでなければfalseを返します。
isNaN() - JavaScript | MDN
NaN - JavaScript | MDN
直接invalidDateを渡してもtrueになる
code:js
validDate
Wed Sep 09 2020 09:00:00 GMT+0900 (日本標準時)
invalidDate
Invalid Date
isNaN(validDate)
false
isNaN(invalidDate)
true
trueの判断の仕方(言い方がわからない?)が違う?
真
invalidDate.getTime()はNaNが返ってくるからNaN is Not-A-Numberで真なのはわかる
invalidDateはInvalid Dateが返ってくるからInvalid Date is Not-A-Numberで真
Invalid Dateってなんなん…
new Date().toString()は"Wed Sep 30 2020 15:56:15 GMT+0900 (日本標準時)" is Not-A-Numberで真
偽
validDate.getTime()は1599609600000 is Not-A-Numberなので偽
validDateはDevToolsで表示するとWed Sep 09 2020 09:00:00 GMT+0900 (日本標準時)だけど数値なので偽
Dateオブジェクトは協定世界時(UTC)の1970年1月1日からの経過ミリ秒数を表現するNumber含んでいます。
Date - JavaScript | MDN