Lingkup adalah salah satu konsep JavaScript terpenting. Jika Anda ingin belajar JavaScript dengan baik, Anda perlu memahami prinsip -prinsip kerja lingkup javascript dan rantai lingkup. Artikel hari ini memperkenalkan penjelasan terperinci tentang contoh lingkup JavaScript, berharap dapat membantu semua orang belajar JavaScript lebih baik.
Setiap bahasa pemrograman memiliki konsep ruang lingkup. Sederhananya, ruang lingkup adalah ruang lingkup variabel dan fungsi yang dapat diakses, yaitu ruang lingkup mengendalikan visibilitas dan siklus hidup variabel dan fungsi. Dalam JavaScript, ruang lingkup variabel bersifat global dan lokal.
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);} dalam ();} 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.
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 Function Scope-> Inner Function Scope
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 Function Scope-> Inner Function Scope
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'; <br> bilah fungsi () {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
• Lingkup Global-> Lingkup Fungsi Func
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 penjelasan terperinci dari sampel lingkup JavaScript yang diperkenalkan oleh editor. Saya harap ini akan membantu Anda. Jika Anda memiliki pertanyaan, silakan tinggalkan saya pesan dan editor akan membalas Anda tepat waktu. Terima kasih banyak atas dukungan Anda ke situs web Wulin.com!