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