1. Rantai cakupan fungsi JavaScript dibagi menjadi rantai cakupan waktu definisi dan rantai cakupan waktu proses;
2. Ketika suatu fungsi didefinisikan, ia memiliki atribut [[scope]] yang menunjukkan rantai cakupan definisinya. Rantai cakupan definisi [[scope]] mengikuti aturan berikut: rantai cakupan definisi suatu fungsi [[ scope]] selalu berupa rantai lingkup pelaksanaan fungsi eksternal di mana ia berada;
3. Rantai cakupan definisi fungsi global hanya berisi atribut jendela;
4. Ketika suatu fungsi dijalankan, rantai cakupan selalu dimasukkan ke dalam objek aktif saat ini di bagian atas rantai cakupan ketika didefinisikan (berisi ini, argumen, parameter, dan variabel lokal);
5. Ketika suatu fungsi dijalankan, pengalamatan variabel selalu dicari dari atas rantai cakupan ke bawah, oleh karena itu, kecepatan pengalamatan variabel global adalah yang paling lambat;
6. Ketika fungsi internal dijalankan, dia masih dapat mengakses rantai cakupan lengkapnya. Inilah sebabnya penutupan dapat mengakses variabel yang ditentukan oleh fungsi eksternal yang diselesaikan saat runtime;
7. Ketika pernyataan with ditemui selama eksekusi fungsi, semua atribut objek yang ditentukan dengan akan sementara didorong ke bagian atas rantai cakupan sebagai bagian atas rantai cakupan;
8. Ketika eksekusi fungsi menemui tangkapan, objek kesalahan yang ditentukan oleh tangkapan akan didorong sementara ke bagian atas rantai cakupan sebagai bagian atas rantai cakupan;
Mari kita beri contoh dan gambarkan rantai cakupan untuk memperdalam pemahaman:
Ada sepotong kode:
Copy kode kodenya sebagai berikut:
fungsi menetapkanEvents(){
var id = "xdi9592";
document.getElementById("simpan-btn").onclick = function(event){
simpanDokumen(id);
};
}
Panggil penutupan anonim yang dihasilkan oleh fungsi ini Penutupan, dan gambarkan gambar berikut untuk memperlihatkan rantai cakupan ketika penetapanEvent dijalankan dan rantai cakupan ketika Penutupan ditentukan: