Rumah >hujung hadapan web >tutorial js >Mengapa kita perlu menambah kata kunci var semasa mengisytiharkan pembolehubah dalam petua JavaScript_javascript

Mengapa kita perlu menambah kata kunci var semasa mengisytiharkan pembolehubah dalam petua JavaScript_javascript

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBasal
2016-05-16 16:34:521305semak imbas

Dalam JavaScript, var digunakan untuk mengisytiharkan pembolehubah, tetapi sintaks ini tidak diperlukan sepenuhnya. Dalam banyak kes, kita boleh menggunakan pembolehubah secara langsung tanpa mengisytiharkannya dengan var.

Salin kod Kod adalah seperti berikut:

var x = "XX"; y="xxx";

Dan seterusnya. Terdapat masalah sebagai contoh, dalam baris tertentu kod, saya ingin menggunakan pembolehubah yang diisytiharkan Akibatnya, disebabkan oleh kesilapan menaip atau ejaan, pembolehubah itu ditulis sebagai y. perisytiharan tersirat" pembolehubah. y, dalam proses pengaturcaraan sebenar, ralat jenis ini kadangkala sukar dicari.
Apabila anda membuat pengisytiharan "tersirat" ini dalam konteks semasa, enjin JavaScript akan melihat dahulu dalam konteks semasa untuk melihat sama ada pembolehubah ini telah diisytiharkan sebelum ini, kemudian pergi ke konteks sebelumnya untuk mencarinya tidak dijumpai, , pembolehubah ini akhirnya akan diisytiharkan pada tetingkap!
Contohnya:
Kod adalah seperti berikut:

window. y = "hello"; 
function func(){ 
y = "OH, NO!!!"; 
} 
func(); 
alert(window.y); //#=> display "OH, NO!!!" 
Apabila mana-mana lapisan dalam konteks mempunyai pembolehubah yang ditakrifkan "tersirat", pembolehubah dalam lapisan itu akan diubah suai tanpa menghasilkan pembolehubah baharu pada tetingkap. (Pepijat jenis ini juga agak menjengkelkan, terutamanya apabila merangkum kod yang lebih kompleks)

Contohnya:

Kod adalah seperti berikut:

var x = "window.x"; 
function a() { 
var x = "a's x"; 
var b = function() { 
var c = function() { 
//no var! 
x = "c's x:"; 
}; 
alert("before c run,the b.x:" + x); 
c(); 
alert("after c run, the b.x:" + x); 
}; 
alert("a.x is:" + x); 
b(); 
alert("after b function runed, the a.x is:" + x); 
}; 
alert("before a run, window.x:" + x); 
a(); 
alert("after a run, window.x:" + x); 
Terdapat lapisan berikut: tetingkap, func a, func b, func c sentiasa berhierarki bersarang. tetingkap->a->b->c

Dalam kedua-dua tetingkap dan a, pembolehubah x ditakrifkan, tetapi dalam b pembolehubah tidak ditakrifkan Dalam c, x diisytiharkan 'secara tersirat', dan x akhirnya mengubah nilai pembolehubah.
Ingat, dalam JavaScript, apabila mengisytiharkan pembolehubah, ia mesti didahului dengan var.

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