JavaScript には、基本的に「存在しない」という 2 つの値があります -undefinedとnull.
プログラマーが何も割り当てていないundefinedプロパティは になりますが、プロパティが になるnullにnullは、明示的に割り当てられる必要があります。
プリミティブな値であり、オブジェクトであるため、 nullbecauseの必要性があると考えたことがあります。実際には、どちらもプリミティブ値です。つまり、どちらも空のオブジェクトに変換されるため、コンストラクター関数から返すことも返すこともできません (コンストラクターで失敗を宣言するにはエラーをスローする必要があります)。undefinednulltypeof null'object'undefinednull
また、どちらもfalseブール値のコンテキストで評価されます。私が考えることができる唯一の本当の違いは、一方が に評価されNaN、もう一方0が数値コンテキストで評価されることです。
では、なぜ両方が存在し、プロパティが設定されているかどうかを調べようとするときにundefined誤っnullてチェックしているプログラマーを混乱させるだけなのでしょうか?null
私が知りたいのは、代わりにnull使用して表現できなかったものを使用する必要がある合理的な例を誰かが持っているかどうかです。undefined
したがって、一般的なコンセンサスは、undefined「そのようなプロパティは存在しない」ことをnull意味し、「プロパティは存在しますが、値を保持しない」ことを意味するようです。
JavaScript 実装が実際にこの動作を強制する場合、私はそれundefinedを受け入れることができますが、完全に有効なプリミティブ値であるため、既存のプロパティに簡単に割り当ててこの契約を破ることができます。したがって、プロパティが存在するかどうかを確認したい場合は、in演算子を使用する必要がありhasOwnProperty()ます。undefined繰り返しになりますが、との個別の値の実用的な用途は何nullですか?
私は実際にはundefined、もう使用していないが、したくないプロパティの値を設定解除したいときに使用しますdelete。null代わりに使うべきですか?