Dalam beberapa bahasa pemrograman seperti C, setiap bagian kode dalam kawat gigi keriting memiliki ruang lingkupnya sendiri, dan variabel tidak terlihat di luar segmen kode yang menyatakannya. Kami menyebut cakupan blok, dan tidak ada lingkup blok di JavaScript. Sebagai gantinya, JavaScript menggunakan ruang lingkup fungsi: variabel didefinisikan dalam tubuh fungsi yang menyatakannya dan tubuh apa pun yang bersarang di badan fungsi. Dalam kode berikut, I, J dan K yang didefinisikan di lokasi yang berbeda didefinisikan dalam ruang lingkup yang sama.
Salinan kode adalah sebagai berikut:
Teks fungsi (o)
{
var i = 0;
waspada (tipe o);
if (typeof o == "string")
{
var j = 0;
untuk (var k = 0; k <10; k ++)
{
alert (k); // output 0-9
}
alert (k); // output 10
}
alert (j); // output 0
}
Lingkup fungsi JavaScript berarti bahwa semua variabel yang dinyatakan di dalam suatu fungsi selalu terlihat di badan fungsi. Menariknya, ini berarti bahwa variabel bahkan tersedia sebelum dinyatakan. Fitur JavaScript ini secara informal disebut Hoisting, yaitu, semua variabel yang dinyatakan dalam badan fungsi JavaScript (tidak ada penugasan yang terlibat) yang "maju" ke bagian atas badan fungsi. Lihat kode berikut
Salinan kode adalah sebagai berikut:
var global = "globas";
fungsi global ()
{
peringatan (global); // tidak ditentukan
var global = "halo qdao";
peringatan (global); // halo qdao
}
Karena sifat ruang lingkup fungsi, variabel lokal selalu didefinisikan di seluruh badan fungsi, yang berarti bahwa variabel di dalam fungsi tubuh menutupi variabel global dengan nama yang sama. Meskipun demikian, variabel lokal akan benar -benar ditugaskan ketika program menjalankan pernyataan VAR. Oleh karena itu, proses di atas setara dengan: mendeklarasikan variabel dalam fungsi "maju" ke bagian atas badan fungsi, dan meninggalkan inisialisasi variabel kolega di posisi asli:
Salinan kode adalah sebagai berikut:
var global = "globas";
fungsi global ()
{
var global;
peringatan (global); // tidak ditentukan
global = "halo qdao";
peringatan (global); // halo qdao
}