JavaScriptには、情報がないことを表す2つの特別な値があります:Nullと未定義です。私は個人的に、これら2つの特別な価値の違いは次の観点から理解できると思います。
1.Nullは、情報(以前に値が割り当てられた変数など)を保存するコンテナを表しますが、コンテナ内のコンテンツは空です。
2。未定義とは、情報を保存するために使用されるコンテナがないことを意味します。
JavaScriptのnullは、他のほとんどのプログラミング言語ではnullと変わりません。基本的に、情報値が空であることを示すために使用されます。 JavaScriptでは、この式は次の状況で未定義の結果を返します。
1.値が割り当てられていない変数。
2。オブジェクトに存在しないプロパティ値にアクセスします。
3.配列に存在しないメンバーにアクセスします。
4.返されたステートメントなしで関数を呼び出します。
5。returnステートメントが空である関数を呼び出します( "return;")。
実際、InfinityやNanのように、未定義はJavaScriptのグローバル変数であり、ECMAScript 3に他の値を割り当てることさえできます。EcMascript5はこのエラーを修正し、未定義の変数を読み取り専用に設定します。
nullと未定義の比較には、===合同演算子を使用できます。通常の==演算子を使用する場合、nullは未定義と同等です。
コードコピーは次のとおりです。
console.log(null == undefined); // true
console.log(null === undefined); // false
プログラミングプロセス中に、変数にnull値を割り当てる必要がある場合、一般に未定義の代わりにnullが使用されます。その理由は次のとおりです。
1。未定義は一般に、システムレベルの情報が不足していると見なされ、エラー報告レベルがあります。
2. Nullは通常、プログラミングレベルであると見なされ、論理操作レベルの情報値は空です。
タイプ変換がプログラムに関与している場合、数値に変換された場合のnullおよび未定義の結果は異なります。
1.数値への未定義の変換の結果はnanです。
2。nullを数値に変換した結果は0です。
空の文字列と空の配列を数字に変換した結果も0であることに言及する価値があります。
「いいえ」を表す2つの値がJavaScriptで設計されている理由については、Ruan Yifengのブログ投稿を参照できます。
実験
次の実験コードでは、式の結果は未定義です。
コードコピーは次のとおりです。
var a;
console.log(a);
関数サンプル(x){
this.x = x;
}
var s = new Sample();
console.log(sx)
console.log(s.notexistvariable);
var n = [2,3,4];
console.log(n [8]);
function test(){
//この関数の返品値はありません
}
console.log(test());
関数test2(){
戻る;
}
console.log(test2());