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:
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:
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:
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
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:
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.