Klousur JavaScript
- Hal Sebelumnya Pengikat Fungsi JS
- Hal Berikutnya Ringkasan JS Class
JavaScript variabel miliklokal
atauGlobal
Lingkungan akses.
Variabel global dapat diakses melaluiKlosur
Mencapai lokal (pribadi).
Variabel global
Fungsi dapat mengakses fungsiInternalYang diddefiniskan, seperti:
Contoh
function myFunction() { var a = 4; return a * a; }
Namun fungsi dapat mengakses fungsiEksternalVariabel yang diddefiniskan, seperti:
Contoh
var a = 4; function myFunction() { return a * a; }
Pada contoh terakhir ini,a
adalahGlobalVariabel.
Pada halaman web, variabel global termasuk objek window.
Variabel global dapat digunakan dan diubah oleh semua skrip di halaman (dan di jendela).
Pada contoh pertama,a
adalahLokalVariabel.
Variabel lokal hanya dapat digunakan di dalam fungsi yang didefiniskannya. Bagi kode fungsi lain dan kode skrip yang lainnya, ia tak terlihat.
Variabel global dan lokal dengan nama yang sama adalah variabel yang berbeda. Perubahan salah satunya tidak akan mengubah yang lain.
tanpakata kunci var
Variabel yang dibuat selalu global, walaupun mereka dibuat di dalam fungsi.
Kehidupan variabel
Variabel global hidup sepanjang aplikasi Anda (jendela, halaman web).
Variabel lokal hidup untuk sementara. Mereka dibuat saat pemanggilan fungsi dan dihapus saat fungsi selesai.
Dilema penimbangan counter
Jika Anda ingin menggunakan variabel untuk menghitung, dan Anda ingin counter ini dapat digunakan oleh semua fungsi.
Anda dapat menggunakan variabel global dan fungsi untuk menaikkan counter:
Contoh
// Pemulihan counter var counter = 0; // Fungsi untuk menaikkan counter function add() { counter += 1; } // Pemanggilan add() tiga kali add(); add(); add(); // Jika ini adalah 3
Solusi di atas memiliki masalah: kode mana pun di halaman dapat mengubah counter tanpa memanggil add().
Untuk fungsi add(), counter harus lokal untuk mencegah kode lain mengubahnya:
Contoh
// Pemulihan counter var counter = 0; // Fungsi untuk menaikkan counter function add() { var counter = 0; counter += 1; } // Pemanggilan add() tiga kali add(); add(); add(); // Jika ini adalah 3, tapi itu adalah 0.
Ia tidak berguna, karena kita menampilkan counter global bukannya counter lokal.
Dengan membiarkan fungsi mengembalikan dirinya sendiri, kita dapat menghapus counter global dan mengakses counter lokal:
Contoh
// Fungsi untuk menaikkan counter function add() { var counter = 0; counter += 1; return counter; } // Pemanggilan add() tiga kali add(); add(); add(); // Jika ini adalah 3, tapi itu adalah 1.
Ia tidak berguna, karena setiap kali kita memanggil fungsi, counter lokal akan direset.
Fungsi internal JavaScript dapat memecahkan masalah ini.
Fungsi berada di dalam JavaScript
Semua fungsi memiliki hak mengakses lingkungan akses global.
Faktanya, di JavaScript, semua fungsi memiliki hak mengakses lingkungan akses di atasnya.
JavaScript mendukung fungsi yang berada di dalam fungsi. Fungsi yang berada di dalam fungsi dapat mengakses lingkungan akses di atasnya.
在本例中,内部函数 plus()
可以访问父函数中的 counter
计数器变量:
Contoh
function add() { var counter = 0; function plus() {counter += 1;} plus(); return counter; }
Dengan cara ini, masalah penghitung dapat diselesaikan, jika kita dapat mengaksesnya dari luar. plus()
fungsi.
Kami masih perlu menemukan fungsi yang dieksekusi sekali. counter = 0
metodenya.
Kami memerlukan klosur (closure).
Klousur JavaScript
Ingat fungsi yang dieksekusi otomatis? Apa yang akan dilakukan fungsi ini?
Contoh
var add = (function () { var counter = 0; return function () {return counter += 1;} })(); add(); add(); add(); // Penghitung saat ini adalah 3
Pengertian Contoh
Variabel add
Atribut adalah nilai kembalian fungsi yang dieksekusi otomatis.
Fungsi yang dieksekusi sekali ini. Dia mengatur penghitung menjadi nol (0) dan mengembalikan ekspresi fungsi.
Maka add menjadi fungsi. Bagian yang paling “menarik” adalah kemampuannya untuk mengakses penghitung di lingkungan asal.
Ini disebut JavaScript Klosur. Ini membuat fungsi memiliki “Pribadi“Variabel” menjadi memungkinkan.
Penghitung dilindungi oleh lingkungan fungsi anonim ini dan hanya dapat diubah menggunakan fungsi add.
Klosur adalah fungsi yang memiliki hak mengakses lingkungan asal, bahkan setelah fungsi induk ditutup.
- Hal Sebelumnya Pengikat Fungsi JS
- Hal Berikutnya Ringkasan JS Class