JavaScript浅析--nullとundefined
4230 ワード
JavaScriptには7つのデータタイプがあり、6つの基本データタイプ
一、違います
意味的には明確な違いがあります. 1.undefined
*明示的に
2.nullは、オブジェクトを保存するために変数を使用したいが、まだ具体的な内容がない場合、 回収したいデータについては、 判断する
1.undefined法2で使用される
Number、String、Boolean、Undefined、Null、Symbol(ES6 )
があり、1つの複雑なタイプObject
がある.Undefined
およびNull
は他のものとは違って、それらは一つの一意の値しかないので、それぞれundefined
およびnull
である.何が違いますか?なぜ基本タイプにはこの二つが必要ですか?どんな効果がありますか?詳しく聞いてください.一、違います
意味的には明確な違いがあります.
undefined
は、変数が初期化されていないことを示している.null
は、変数が初期化されたことを表し、値は空の値を与えられる.Undefined
タイプは唯一の値undefined
だけで、undefined
が現れた場合は、次の3つがあります.(1)変数を宣言したが、初期化は行われていません.例えば、関数に戻り値が指定されていないデフォルトreturn undefined
は、関数パラメータが参照されていなくても、デフォルトでundefined
などに初期化されます.var value;
value; // undefined
(2)アクセスが存在しないオブジェクト属性もundefined
に戻る.var obj = {value: 1};
obj.content; // undefined
delete obj.value;
obj.value; // undefined
(3)void
演算子求償値は、後の式の結果の多少にかかわらずundefined
に戻ります.void (1 + 2); // undefined
a
タグのデフォルトのジャンプをブロックするとき、href="javascript:void 0"
という書き方がよくあります.この文の中のjavascript:
の後ろには他のjs実行可能なステートメントがあり、後の実行結果をhref
に与えてもいいです.undefined
に戻ると、ジャンプしません.ここで利用されるのもvoid
演算子がundefined
に戻る原理である.*明示的に
undefined
を他の変数に割り当てることができますが、このようなことは無意味であり、提案されていません.また、宣言されていませんが、初期化されていない変数のデフォルトはundefined
です.再割当は必要ありません.2.null
Null
タイプも唯一の値null
だけであり、空のオブジェクトポインタを表しています.オブジェクトはすべて参照タイプで、変数は一般的にオブジェクトのポインタアドレス値で、実際のオブジェクトの内容はアドレス値が指すブロックメモリがあります.null
は空のポインタであり、メモリを指していません.存在しないオブジェクトを表しています.以下の3つの場合は、null
に戻ります.(1)戻りたい変数タイプがオブジェクトで、このオブジェクトが見つからない場合は、null
に戻ります.// null
document.getElementById('example'); // null
(2)プロトタイプチェーンの終端はnull
である.Object.prototype
のプロトタイプを取得するとnull
に戻る.Object.getPrototypeOf(Object.prototype); // null
(3)他の自己割当値null
の変数にアクセスする.var content = null;
content; // null
*使用シーン:null
に初期化することができる.null
に指定して参照を解除してもいいです.すぐに回収しないように注意してください.実行環境から逸脱させるだけです.jsのゴミ回収メカニズムは、次回実行時に実行環境から離脱した変数を自動的に消去します.1.undefined
undefined
の検出方式には、typeof
(文字列形式)に戻りますか?var value;
typeof value; // "undefined"
typeof content; // "undefined", , typeof, not defined
(2)"undefined"
とundefined
と比較し、===
に戻るか否かを判断する.var value;
value === undefined; // true
content === undefined; // ,Uncaught ReferenceError: content is not defined
その中の第二の方法は2点に注意します.true
は、実際には値undefined
ではなく、大域変数undefined
である(実際にはすべての直接人為的使用window.undefined
はアクセスundefined
である).ただし、window.undefined
の値はちょうどwindow.undefined
であり、ES 5の後にこの属性の書き換えは許されない.undefined
は文字を保留していないし、意外にも実際には変数を宣言することができます.undefined
という名前を自由に与えられています.このように使い方は正確ではありません.function test() {
var value;
var undefined = 'hello';
console.log(value === undefined); // fasle
}
test(); // undefined window , window.undefined , undefined
改善された方法は、システムを直接使用して返されるundefined
である.undefined
の関数、return
、または直接void 0
などがない.function test() {
var value;
var undefined = 'hello';
console.log(value === window.undefined); // true
console.log(value === void 0); // true
}
test();
2.nullwindow.undefined
の検出方法は、null
が===
に戻るかどうかを直接判断する.厳密には(3等)に等しいので、true
もundefined == null
に戻り、true
は予約文字であるので、null
は変数の随意な割り当てが定義される心配はない.var obj = null;
obj === null; // true
*null
については、null
を使用して、typeof
が戻ってくるのはtypeof null
です.