Rumah  >  Artikel  >  hujung hadapan web  >  Pengendali padam pelik dalam petua JavaScript_javascript

Pengendali padam pelik dalam petua JavaScript_javascript

WBOY
WBOYasal
2016-05-16 16:09:561082semak imbas

Operator padam tidak begitu biasa digunakan dalam JavaScript, tetapi ciri-cirinya sememangnya sangat pelik.

1, padamkan atribut objek, kod:

Salin kod Kod adalah seperti berikut:

var o = {
a: 1,
b: 2
};
padam o.a;
makluman(o.a); //tidak ditentukan

Jadi, adakah memadamkan atribut objek atau nilai atribut objek saya mula berfikir bahawa apa yang dipadamkan sepatutnya nilainya, kerana hasilnya tidak ditentukan dan tiada ralat dilaporkan. Tetapi sebenarnya pandangan saya salah, contohnya:

Salin kod Kod adalah seperti berikut:

var o = {};
var a = {
pro: "zhenn"
};
o.c = a;
padam o.c; //Padam atribut a
objek o console.log(o.c); // undefined
console.log(a.pro); // zhenn

Melalui kod di atas, tidak sukar untuk melihat bahawa selepas memadamkan o.c, nilai yang ditunjukkan oleh o.c tidak dipadamkan, iaitu objek a masih wujud, jika tidak, a.pro tidak seharusnya melepasi tahap kompilasi. Bercakap mengenainya, anda boleh memahami bahawa padam memadamkan atribut objek Sebenarnya, ia adalah sama dengan memadam rujukan kepada nilai atribut dalam objek, tetapi nilai ini masih dalam timbunan objek!

2. Untuk operasi pada tatasusunan, lihat kod dahulu:

Salin kod Kod adalah seperti berikut:

var arr = [1,2,3];
padamkan arr[2];
console.log(arr.length); // 3
console.log(arr); // [1,2,undefined]

Sekali lagi, terbukti bahawa padam sebenarnya tidak memadamkan elemen, tetapi hanya memadamkan nilai kunci yang sepadan dengan elemen. Untuk memahami lebih lanjut sifat pemadaman, bandingkan dengan kaedah pop dalam Array. Seperti berikut:

Salin kod Kod adalah seperti berikut:

var arr = [1,2,3];
arr.pop();
console.log(arr); // [1,2]
console.log(arr.length) // 2

Sekarang kebenaran harus didedahkan.

3. Operasi di atas pada objek dan tatasusunan mudah difahami, tetapi operasi pembolehubah sudah pasti mengelirukan:

Salin kod Kod adalah seperti berikut:

var a = 1;
padamkan a;
makluman(a); // 1

fungsi fn(){ return 42; padamkan fn;
makluman(fn()); // 42

b = 2;
padamkan b;
makluman(b); // b tidak ditakrifkan;

Sukar untuk dijelaskan Ia juga pembolehubah global Yang diisytiharkan dengan var tidak boleh dipadamkan, tetapi pembolehubah yang diisytiharkan secara langsung boleh dipadamkan. Ia hanya bermakna pembolehubah yang diisytiharkan melalui var dan fungsi yang diisytiharkan melalui fungsi mempunyai atribut DontDelete dan tidak boleh dipadamkan.


Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn