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.
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!!!"
Salin selepas log masuk
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);
Salin selepas log masuk
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.