Semua yang didefinisikan di luar fungsi adalah variabel global, dan yang didefinisikan di dalam fungsi adalah variabel lokal. Definisi di sini mengacu pada deklarasi oleh var.
JavaScript memiliki konsep global implisit, yang berarti bahwa variabel apa pun yang tidak Anda nyatakan akan menjadi properti objek global. Misalnya:
Salinan kode adalah sebagai berikut:
function test () {
myName = "huming";
waspada (myName);
}
tes(); // "bersenandung"
waspada (myName); // "bersenandung"
Kedua hasilnya sama, menunjukkan bahwa myName adalah variabel global.
Jadi, apakah ada perbedaan antara variabel global implisit dan variabel global yang terdefinisi dengan baik? . Harus ada jawaban, lihat contoh berikut:
Salinan kode adalah sebagai berikut:
// Tentukan tiga variabel global
var global_test1 = 1;
global_test2 = 2; // buku teks negatif
(fungsi () {
global_test3 = 3; // buku teks negatif
} ());
// Coba hapus
hapus global_test1; // PALSU
hapus global_test2; // BENAR
hapus global_test3; // BENAR
// uji penghapusan
peringatan (typeOf global_test1); // "nomor"
peringatan (typeOf global_test2); // "belum diartikan"
peringatan (typeOf global_test3); // "belum diartikan"
Dari contoh di atas, kita dapat melihat bahwa global_test1 yang ditentukan oleh var di luar fungsi tidak dapat dihapus, sedangkan global_test2 dan global_test3 tidak ditentukan oleh var dihapus (apakah itu dibuat dalam badan fungsi atau tidak).
Singkatnya, variabel global yang dinyatakan oleh VAR di luar fungsi tidak dapat dihapus, sedangkan variabel global implisit dapat dihapus.
Catatan di sini: JavaScript memiliki perilaku yang disebut "pengangkat" (gantung/hentikan parsing/preparsing).
Mari kita gunakan contoh untuk menggambarkan:
Salinan kode adalah sebagai berikut:
var myname = "huming"; // Nyatakan variabel global
function test () {
waspada (myName);
var myname = "local_huming";
waspada (myName);
}
tes();
Apakah Anda menebak konten peringatan konsisten dua kali? ? Jelas tidak konsisten, apakah perlu mengatakan konsistensi itu? . Output yang sebenarnya adalah: "tidak terdefinisi", "local_huming".
Contoh di atas setara dengan
Salinan kode adalah sebagai berikut:
var myname = "huming"; // Nyatakan variabel global
function test () {
var myname;
waspada (maname); <br> myname = "local_huming";
waspada (myName); // "lokal"
}
tes();
MyName output peringatan pertama bukanlah variabel global yang Anda pikirkan, tetapi variabel lokal dalam lingkup (badan fungsi). Meskipun belum dinyatakan, itu telah dianggap sebagai deklarasi. Inilah yang disebut "pengangkat".
Ini harus dipahami. Jika Anda menggunakan variabel di badan fungsi dan redeclare nanti, kesalahan mungkin terjadi.
Spesifikasi Menulis:
Salinan kode adalah sebagai berikut:
function test () {
var a = 1,
b = 2,
C = A + B,
d = {},
E,
F;
// function body ...
}
Manfaatnya adalah:
1. Semua variabel lokal didefinisikan pada awal fungsi, yang nyaman untuk dicari;
2. Cegah kesalahan logis yang digunakan sebelum variabel didefinisikan.
Pernahkah Anda memahami deklarasi variabel JavaScript? Konten di atas sangat rinci dan mudah dimengerti. Ringkasan terakhir juga sangat relevan. Jangan lewatkan.