JavaScriptでのnullとundefinedの違い
参照
JavaScriptnullの典型的な使用法
関数パラメーターとしては、関数パラメーターがオブジェクトではないことを意味します
function myFn(obj) {
if(null == obj) {
// code
}
}
オブジェクトプロトタイプチェーンの終わりとして
Object.getPrototypeOf(Object.prototype);
変数を解放するときは、変数にnullを割り当てます
let o={
code:'abc'
};
o = null;
未定義の典型的な使用法
変数は宣言されていますが割り当てられていません。変数の値は未定義です
let o;
console.log(o); //undefined
関数が提供する必要のあるパラメーターが呼び出し時に提供されない場合、提供されないパラメーターの値は未定義です
function myFn(o) {
console.log(o);
}
myFn(); //undefined
オブジェクトに含まれていないプロパティ、値は未定義です
let o={
code:'abc'
};
console.log(o.name); //undefined
関数が値を返さない場合、デフォルトではundefinedを返します
function myFn(obj) {
obj = 'a';
}
console.log(myFn()); //undefined
nullと未定義の類似点
ブール値に変換するとFalse
console.log(Boolean(null)); // false
console.log(Boolean(undefined)); // false
nullとundefinedの違い
数値に変換すると結果が異なります。null変換の結果は有効な数値0であり、未定義の変換の結果はNaNです。
console.log(Number(null)); // 0
console.log(Number(undefined)); // NaN
2つのタイプは異なり、nullのタイプはオブジェクトであり、undefinedのタイプはundefinedです。
console.log(typeof null); //object
console.log(typeof undefined); //undefined
nullと未定義を比較する
nullとundefinedを区別するために、合同のみを使用できます。合同では、2つのタイプが等しいかどうかを厳密に比較します。
console.log(Boolean(null == undefined)); // true
console.log(Boolean(null === undefined)); // false
総括する
上記の比較の結果、これら2つのタイプを明確に理解できました。通常、コードを書くときに変数に有効な値があるかどうかを判断するときは、2つを区別する必要はなく、ブール型として使用するだけです。ただし、プロパティが存在するかどうかを判断する必要がある場合は、型を厳密に使用して未定義を判断する必要があります。最後に、数値を渡す場合は、最初に判断する必要があり、数値型に直接キャストすることはできません。そうしないと、nullによって異常な結果が得られ、undefinedによって無効な結果NaNが直接計算されます。