Rumah >hujung hadapan web >tutorial js >Penjelasan terperinci tentang kemahiran deklarasi_javascript pembolehubah JavaScript

Penjelasan terperinci tentang kemahiran deklarasi_javascript pembolehubah JavaScript

WBOY
WBOYasal
2016-05-16 16:30:091475semak imbas

Perkara yang ditakrifkan di luar badan fungsi ialah pembolehubah global dan yang ditakrifkan di dalam badan fungsi ialah pembolehubah tempatan. Takrifan di sini merujuk kepada pengisytiharan melalui var.

JavaScript mempunyai konsep global tersirat, yang bermaksud bahawa mana-mana pembolehubah yang anda tidak isytiharkan akan menjadi sifat objek global. Contohnya:

Salin kod Kod adalah seperti berikut:

ujian fungsi(){
Nama saya = "bersenandung";
makluman(nama saya);
}
test(); // "bersenandung"
alert(nama saya); //"bersenandung"

Kedua-dua keputusan adalah sama, menunjukkan bahawa nama saya ialah pembolehubah global.

Jadi, adakah terdapat perbezaan antara pembolehubah global tersirat dan pembolehubah global yang ditakrifkan secara eksplisit? . Jawapannya pasti ya, lihat contoh di bawah:

Salin kod Kod adalah seperti berikut:

// Tentukan tiga pembolehubah global
var global_test1 = 1;
global_test2 = 2; // Bahan pengajaran negatif
(fungsi () {
Global_test3 = 3; // Bahan pengajaran negatif
}());
// Percubaan untuk memadam
padamkan global_test1; // false
padam global_test2; // benar
padamkan global_test3; // benar
// Uji pemadaman
alert(typeof global_test1); // "nombor"
alert(typeof global_test2); // "tidak ditentukan"
alert(typeof global_test3); // "tidak ditentukan"

Ia boleh dilihat daripada contoh di atas: global_test1 yang ditakrifkan oleh var di luar fungsi tidak boleh dipadamkan, dan global_test2 dan global_test3 yang tidak ditakrifkan oleh var akan dipadamkan (tidak kira sama ada ia dicipta dalam badan fungsi).

Ringkasnya, pembolehubah global yang diisytiharkan melalui var di luar fungsi tidak boleh dipadamkan, tetapi pembolehubah global tersirat boleh dipadamkan.

Perlu diingatkan di sini: JavaScript mempunyai gelagat yang dipanggil "mengangkat" (menggantung/penghuraian atas/pra-penghuraian).

Mari kita beri ilustrasi dengan contoh:

Salin kod Kod adalah seperti berikut:

var myname = "huming"; //Isytiharkan pembolehubah global
ujian fungsi() {
makluman(nama saya);
var myname = "local_huming";
makluman(nama saya);
}
ujian();

Adakah anda fikir kandungan kedua-dua makluman adalah sama? ? Jelas sekali tidak konsisten, tidak perlu dikatakan konsisten. . Output sebenar ialah: "undefined", "local_huming".

Contoh di atas adalah bersamaan dengan

Salin kod Kod adalah seperti berikut:

var myname = "huming"; //Isytiharkan pembolehubah global
ujian fungsi() {
var nama saya;
alert(maname);
myname = "local_huming";
alert(nama saya); // "tempatan"
}
ujian();

Output myname oleh makluman pertama bukanlah pembolehubah global yang anda fikirkan, tetapi pembolehubah tempatan dalam skop yang sama (badan fungsi) dengannya. Walaupun ia tidak diisytiharkan, ia dianggap sedemikian. Ini dipanggil "angkat angkat".

Ini sepatutnya menjelaskannya. Apabila anda menggunakan pembolehubah dalam badan fungsi dan kemudian mengisytiharkannya semula kemudian, ralat mungkin berlaku.

Spesifikasi penulisan:

Salin kod Kod adalah seperti berikut:

ujian fungsi() {
var a = 1,
b = 2,
        c = a b,
      d = {},
        e,
         f;
// fungsi badan...
}

Faedahnya ialah:

1. Semua pembolehubah tempatan ditakrifkan pada permulaan fungsi untuk carian mudah;

2. Cegah ralat logik apabila pembolehubah digunakan sebelum ia ditakrifkan.

Adakah anda memahami perisytiharan pembolehubah JavaScript? Kandungan di atas sangat terperinci dan mudah difahami.

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