私が知っているJavaScriptのundefinedとnullの違い
1767 ワード
undefinedとnullについては彼らの違いがたくさんあることを知っています.彼らの違いについても知っていますが、具体的なシステムはありません.そのためにまとめてみました.主な心得は以下の通りです.
それらを区別するには、まずこの二つの値が表す意味を明確にします. nullはJavaScriptの字面量で、空の値を表します.即ち対象が現れないことを表します.それはJavaScriptの元の値の一つです.typeof演算を使って「object」を得ます. undefinedはグローバルオブジェクトの一つの属性であり、変数が宣言されて初期化されていない場合、undefinedが得られる. 具体的な表現は以下の通りです
null:つまり空で対象がないという意味です.は、関数のパラメータとして、オブジェクトではないことを表しています. は対象プロトタイプチェーンの終点となります. undefined:欠損値を表します.ここに値があるはずですが、定義されていません.変数が宣言されましたが、値がない場合はundefined です.関数を呼び出したときに提供すべきパラメータが提供されていません.このときundefined です.オブジェクトには、属性が割り当てられていません.この属性値はundefined です.関数は戻り値がないので、デフォルトはundefined に戻ります.
nullとundefinedの違いは主に以下の3点に現れます.
1.値は等しいが、タイプは同じではない.
2.数字の演算が異なります.
3.具体的なやり方が違っています.
値が存在するかどうかを判断するときは、このように書いてもいいです.
それらを区別するには、まずこの二つの値が表す意味を明確にします.
a;
console.log(a);
//Uncaught ReferenceError: a is not defined
var b = null;
console.log(b); //null
それらの出現の情景もそれぞれ違っています.具体的には次のようにまとめられています.null:つまり空で対象がないという意味です.
nullとundefinedの違いは主に以下の3点に現れます.
1.値は等しいが、タイプは同じではない.
var x;
var y = null;
console.log(x == y); //ture
console.log(x ===y); //false
上のコードの中で==はタイプ変換を継続し、値は等しいので、tureが得られます.一方、==ではタイプ変換が発生しないのでfalseが得られます.したがって、undefinedとnullの値は等しく、タイプは等しくない.2.数字の演算が異なります.
1+null
//1
1+undefined
//NaN
これは約束の違いから決めたのです.規定の中で数字とundefinedは運算する時、結果はすべてNaNです.nullと演算する場合、nullは常に0です.3.具体的なやり方が違っています.
値が存在するかどうかを判断するときは、このように書いてもいいです.
objA.valueA === undefined
相手が空かどうかを判断したい時は、こう書いてもいいです.objA.valueA == null
最後に一波MDNでまとめたnullとundefinedの違いのコードを借ります.typeof null // object ( 'null')
typeof undefined // undefined
null === undefined // false
null == undefined // true
null === null // true
null == null // true
!null //true
isNaN(1 + null) // false
isNaN(1 + undefined) // true