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