Lingkup JavaScript selalu menjadi titik pengetahuan yang sulit dipahami dalam pengembangan front-end. Ingat beberapa kata tentang ruang lingkup JavaScript. Anda tidak takut bepergian keliling dunia ...
1. "Tidak ada ruang lingkup level blok di JavaScript"
Ada ruang lingkup level blok di Java atau C#, yaitu, kawat gigi juga merupakan ruang lingkup.
public static void main () {if (1 == 1) {string name = "tujuh";} system.out.println (name);} // Laporkan kesalahan public static void main () {if (1 == 1) {string name = "tujuh";} console.writeline (nama);} // Laporkan kesalahanTidak ada ruang lingkup level blok di JavaScript
fungsi main () {if (1 == 1) {var name = 'tujuh';} console.log (name);} // output: tujuh2. JavaScript mengadopsi ruang lingkup fungsi
Dalam JavaScript, setiap fungsi bertindak sebagai ruang lingkup, dan variabel dalam ruang lingkup internal tidak dapat diakses secara eksternal.
function main () {var innerervalue = 'tujuh';} main (); console.log (innerervalue); // kesalahan: Referenceerror yang tidak dibawa: innervalue tidak didefinisikan3. Rantai Lingkup JavaScript
Karena setiap fungsi dalam JavaScript adalah ruang lingkup, jika fungsi fungsi bersarang muncul, rantai lingkup akan muncul.
xo = 'Alex'; func fungsi () {var xo = "tujuh"; fungsi inner () {var xo = 'alvin'; console.log (xo);} inner ();} func ();Sebagai contoh, kode di atas muncul dalam rantai lingkup yang terdiri dari tiga lingkup. Jika rantai lingkup muncul, pesanan akan muncul saat mencari variabel. Untuk contoh di atas:
Ketika Console.log (XO) dieksekusi, perintah pencariannya adalah mencari dari dalam ke luar sesuai dengan prioritas rantai ruang lingkup. Jika lapisan dalam tidak ada, itu secara bertahap akan melihat ke atas sampai tidak ada kecuali ditemukan.
425762-20160707114743577-37359182.png
4. Rantai lingkup Javascript telah dibuat sebelum eksekusi
Lingkup JavaScript telah dibuat sebelum dieksekusi. Ketika dieksekusi di masa depan, Anda hanya perlu mencari sesuai dengan rantai lingkup.
Contoh 1:
xo = 'Alex'; func fungsi () {var xo = "tujuh"; fungsi inner () {console.log (xo);} return dalam;} var ret = func (); ret (); // hasil output: tujuhKode di atas sudah ada sebelum fungsi disebut:
Global Scope -> Func Fungsi Lingkup -> Lingkup Fungsi Dalam
Saat mengeksekusi [ret ();], karena mengacu pada fungsi dalam, rantai ruang lingkup fungsi ini telah didefinisikan sebagai: ruang lingkup global -> lingkup fungsi fungsi -> ruang lingkup fungsi dalam, jadi ketika mengeksekusi [ret ();], variabel akan ditemukan berdasarkan rantai ruang lingkup yang ada.
Contoh 2:
xo = 'Alex'; func fungsi () {var xo = "eirc"; function inner () {console.log (xo);} xo = 'tujuh'; return dalam;} var ret = func (); ret (); // hasil output: tujuhKode di atas memiliki tujuan yang sama dengan Contoh 1, dan juga menekankan bahwa rantai lingkup sudah ada sebelum fungsi disebut:
Global Scope -> Func Fungsi Lingkup -> Lingkup Fungsi Dalam
Secara berbeda, saat mengeksekusi [var ret = func ();], nilai variabel XO dalam ruang lingkup fungsi telah diatur ulang menjadi "tujuh" dari "Eric", jadi ketika mengeksekusi [ret ();] nanti, Anda hanya dapat menemukan "tujuh".
Contoh 3:
xo = 'Alex'; function bar () {console.log (xo);} func fungsi () {var xo = "tujuh"; return bar;} var ret = func (); ret (); // hasil output: AlexDalam kode di atas, dua rantai lingkup telah dibuat sebelum fungsi dijalankan:
Lingkup Global -> Lingkup Fungsi Bar
Global Scope -> Func Function Scope
Saat mengeksekusi [ret ();], ret mengacu pada fungsi batang, dan rantai ruang lingkup fungsi batang sudah ada: ruang lingkup lingkup global -> lingkup fungsi batang, jadi ketika mengeksekusi, itu akan dicari berdasarkan rantai ruang lingkup yang ada.
5. Pernyataan sebelumnya
Jika Anda tidak membuat variabel dan menggunakannya langsung di JavaScript, kesalahan akan dilaporkan:
Console.log (xxoo); // Kesalahan: Referensi Tanpa Dianbah: XXOO tidak didefinisikan
Dalam JavaScript, jika nilai dibuat tanpa menetapkan nilai, nilainya tidak terdefinisi, seperti:
var xxoo; console.log (xxoo); // output: tidak terdefinisi
Jika ini ditulis dalam fungsi:
function foo () {console.log (xo); var xo = 'tujuh';} foo (); // output: tidak ditentukanKode di atas tidak melaporkan kesalahan tetapi output tidak ditentukan. Alasannya adalah bahwa sebelum fungsi JavaScript dieksekusi, mereka akan mendeklarasikan semua variabel di dalamnya tanpa menetapkan nilai. Oleh karena itu, ini setara dengan contoh di atas bahwa fungsi telah dieksekusi var xo ketika "dikompilasi"; Jadi output dari kode di atas tidak ditentukan.
Di atas adalah apa yang diperkenalkan editor kepada Anda untuk menyelesaikan lingkup JavaScript (klasik) hanya dalam lima kalimat. Saya harap ini akan membantu semua orang. Jika Anda memiliki pertanyaan, silakan tinggalkan saya pesan dan editor akan membalas semua orang tepat waktu. Terima kasih banyak atas dukungan Anda ke situs web Wulin.com!