Delete operator tidak terlalu umum digunakan dalam JavaScript, tetapi karakteristiknya memang sangat aneh.
1. Hapus properti objek, kode:
Salinan kode adalah sebagai berikut:
var o = {
A: 1,
B: 2
};
Hapus OA;
waspada (OA); //belum diartikan
Jadi, apakah dihapus atribut objek atau nilai atribut objek? Saya mulai berpikir bahwa penghapusan harus menjadi nilainya, karena hasilnya tidak terdefinisi dan tidak ada kesalahan. Namun pada kenyataannya, pendapat saya salah, berikan contoh:
Salinan kode adalah sebagai berikut:
var o = {};
var a = {
Pro: "Zhenn"
};
oc = a;
Hapus OC; // Hapus properti A objek o
Console.log (OC); // belum diartikan
Console.log (A.Pro); // Zhenn
Melalui kode di atas, tidak sulit untuk melihat bahwa setelah menghapus OC, nilai yang ditunjukkan oleh OC tidak dihapus, yaitu objek masih ada, jika tidak A.Pro tidak boleh lulus level kompilasi. Berbicara tentang hal ini, dapat dipahami bahwa menghapus penghapusan atribut suatu objek dengan cara ini, yang sebenarnya setara dengan menghapus referensi ke nilai atribut dalam objek, tetapi nilai ini masih dalam tumpukan objek!
2. Untuk pengoperasian array, lihat kode terlebih dahulu:
Salinan kode adalah sebagai berikut:
var arr = [1,2,3];
hapus arr [2];
console.log (arr.length); // 3
console.log (arr); // [1,2, tidak terdefinisi]
Telah terbukti lagi bahwa Delete tidak benar -benar menghapus elemen, itu hanya menghapus nilai kunci yang sesuai dengan elemen. Untuk lebih memahami esensi DELETE, bandingkan dengan metode POP dalam array. sebagai berikut:
Salinan kode adalah sebagai berikut:
var arr = [1,2,3];
arr.pop ();
console.log (arr); // [1,2]
console.log (arr.length) // 2
Kebenaran harus diungkapkan sekarang.
3. Operasi di atas pada objek dan array mudah dimengerti, tetapi operasi pada variabel sulit dipahami. Kodenya adalah sebagai berikut:
Salinan kode adalah sebagai berikut:
var a = 1;
hapus a;
waspada (a); // 1
function fn () {return 42; }
hapus fn;
peringatan (fn ()); // 42
B = 2;
hapus b;
waspada (b); // B tidak didefinisikan;
Sulit untuk dijelaskan. Ini juga merupakan variabel global, tetapi variabel B yang dideklarasikan dengan VAR tidak dapat dihapus. Tidak mungkin untuk mengatakan bahwa Hapus sangat aneh. Dalam penjelasan yang diberikan oleh ECMA, itu hanya berarti bahwa variabel yang dinyatakan melalui VAR dan fungsi yang dinyatakan melalui fungsi memiliki fitur DontDelete dan tidak dapat dihapus.