オペレーター削除はJavaScriptではあまり一般的に使用されていませんが、その特性は実際に非常に奇妙です。
1.オブジェクトのプロパティ、コードを削除します。
コードコピーは次のとおりです。
var o = {
A:1、
B:2
};
OAを削除します。
アラート(OA); //未定義
したがって、オブジェクトの属性またはオブジェクトの属性値は削除されますか?結果が未定義であり、エラーがないため、削除が値であるべきだと思い始めました。しかし、実際、私の意見は間違っています、例を挙げてください:
コードコピーは次のとおりです。
var o = {};
var a = {
プロ:「Zhenn」
};
oc = a;
OCを削除します。 //オブジェクトoのプロパティaを削除します
console.log(oc); // 未定義
console.log(a.pro); // Zhenn
上記のコードを介して、OCを削除した後、OCが指し示す値が削除されていないこと、つまりオブジェクトAがまだ存在することを確認することは難しくありません。これについて言えば、削除はこの方法でオブジェクトの属性を削除することを理解できます。これは、実際にはオブジェクトの属性値への参照を削除するのと同等ですが、この値はまだオブジェクトスタックにあります!
2。配列の操作については、最初にコードを見てください。
コードコピーは次のとおりです。
var arr = [1,2,3];
dreate arr [2];
console.log(arr.length); // 3
console.log(arr); // [1,2、未定義]
削除は要素を実際に削除せず、要素に対応するキー値を削除するだけであることが再び証明されました。削除の本質をさらに理解するために、配列のPOPメソッドと比較してください。次のように:
コードコピーは次のとおりです。
var arr = [1,2,3];
arr.pop();
console.log(arr); // [1,2]
console.log(arr.length)// 2
真実は今明らかにされるべきです。
3.オブジェクトと配列の上記の操作は理解しやすいですが、変数の操作は必然的に理解するのが難しいです。コードは次のとおりです。
コードコピーは次のとおりです。
var a = 1;
a;
アラート(a); // 1
function fn(){return 42; }
fnを削除します。
アラート(fn()); // 42
b = 2;
bを削除します。
アラート(b); // bは定義されていません。
説明するのは難しいです。また、グローバル変数ですが、VARで宣言された変数Bは削除できません。削除が非常に奇妙であると言うことは不可能です。 ECMAによって与えられた説明では、varを介して宣言された変数と関数を介して宣言された関数には、dontdelete機能があり、削除できないことを意味します。