NaNについて最もよく知られているのは、NaNがそれ自体と等しくないことです。
NaN === NaN
そして、算術的に不可能な操作はNaNを返します。
'BlaBlaBla'/0
しかし、NaNには少し知られているもの(?)があります。そして、私には非常に便利なアプリケーションのようです。
TL; DR日付がすべて
一言で言えば:
new Date(NaN)
便利なものは何ですか? とにかく無効な日付は日付です。 そして、すべての日付操作はまだ有効です。
タイムスタンプを直接設定する以外のDate操作はNaNを返し、Dateを無効な日付のままにします。
const x = new Date(NaN)
同時に、日付の有効性のチェックはどこでも簡単になります
const x = new Date(NaN)
ここではタイムスタンプへの変換は必要ないことに注意してください。valueOf()は内部でこれを行います。
Dateを使用するすべての操作は変更可能です。 ただし、コンストラクターを使用した複製は、無効な日付でも問題なく機能します。
const x = new Date(NaN)
Dateで2つの日付を直接比較することは実装されておらず、タイムスタンプを介してのみ日付を比較できます。 NaNは、無効な日付が他の日付と確実に等しくならないことを保証します。 これは非常に便利なプロパティだと思います。
const x = new Date(NaN)
残念ながら、Dateコンストラクターは入力パラメーターに関して多少奇妙な動作をします。
new Date(null)
nullはまったくゼロではないため、無効な日付を作成する方がはるかに論理的です。 これをJavascriptの良心に任せましょう。
ただし、コンストラクタにundefinedを強制的に渡すと、結果は期待どおりになります。 だから注意してください。
new Date(undefined)
この記事はNaNについてよりもDateについてより多くのことが判明しましたが、一般的には、この特定の束についてお話ししたかったのです。