Ruang lingkup suatu variabel mengacu pada visibilitas variabel tersebut, sedangkan siklus hidup (masa bertahan hidup) mengkaji variabel tersebut dari sudut pandang lain.
Ruang lingkup variabel di JS dibagi menjadi variabel global dan variabel lokal. Variabel yang didefinisikan di dalam fungsi disebut variabel lokal, dan variabel yang didefinisikan di luar fungsi disebut variabel global. ("Hal-hal di luar fungsi disebut variabel global" bersifat relatif. Premis yang dibahas di sini adalah bahwa variabel secara eksplisit dideklarasikan dengan var. Variabel yang didefinisikan tanpa var dalam suatu fungsi adalah variabel global secara default. Tentu saja, mendeklarasikan variabel tanpa var tidak disukai. ).
Copy kode kodenya sebagai berikut:
var glob = 4; //Deklarasikan variabel global di luar fungsi
fungsi menyenangkan() {
var height = 20; //Deklarasi var dalam fungsi adalah variabel lokal
bobot = 50; //Yang dideklarasikan tanpa var dalam fungsinya adalah variabel global
}
seru();
peringatan(berat);
Tidak ada cakupan tingkat blok di JS, yang diapit oleh kurung kurawal {}. Ada di Pulau Jawa. Tulis kode berikut di metode utama
Copy kode kodenya sebagai berikut:
public static void main(String... args) {
untuk(int i=0;i<5;i++) {
}
{
ke dalam j=10;
}
ke dalam z = 20;
System.out.println(i); // i tidak terlihat, kesalahan akan dilaporkan selama analisis sintaksis, yaitu kompilasi tidak akan lolos
System.out.println(j); // j tidak terlihat, dan kesalahan akan dilaporkan selama analisis sintaksis, yaitu kompilasi tidak akan lolos.
System.out.println(z); // z terlihat, keluaran 20
}
Namun jika di JS
Copy kode kodenya sebagai berikut:
untuk(var i=0;i<5;i++) {
}
var obj = {nama:"Lily"};
untuk(var attr di obj) {
}
{
varj=10;
}
alert(i);//Output 4, tidak ada cakupan tingkat blok
alert(attr); //Nama keluaran, tidak ada cakupan tingkat blok
alert(j);//Output 10, tidak ada cakupan tingkat blok
Ini juga menggambarkan masalah. Hindari penggunaan loop for saat mendeklarasikan variabel dalam lingkup global, jika tidak maka akan menyebabkan pencemaran pada lingkup penamaan global.
Tentu saja, JS1.7 mengusulkan kata kunci let untuk mendeklarasikan variabel (lihat https://developer.mozilla.org/cn/New_in_JavaScript_1.7), yang hanya berlaku untuk cakupan pernyataan for.
Copy kode kodenya sebagai berikut:
untuk(biarkan i=0;i<5;i++) {
//melakukan
}
alert(i);//Terjadi kesalahan saat menjalankan, yang menunjukkan bahwa i tidak ditentukan
JS1.7 perlu direferensikan seperti ini <script type="application/javascript;version=1.7"/></script>
ps: firefox2+ mengimplementasikan JS1.7