Variabel manakah yang tersedia?
Fungsi makeWorker
dibawah membuat fungsi lainnya dan mengembalikannya. Fungsi baru itu bisa dipanggil dari manapun.
Akankah itu mempunyai akses ke variabel luar dari tempat pembuatannya, atau dari tempat pemanggilannya, atau keduanya?
function makeWorker() {
let name = "Pete";
return function() {
alert(name);
};
}
let name = "John";
// pembuatan fungsi
let work = makeWorker();
// dipanggil
work(); // apakah yang akan tampil?
Nilai manakah yang akan muncul? “Pete” atau “John”?
Jawabannya adalah: Pete.
Fungsi work()
didalam kode mendapatkan name
dari tempat dimana itu dibuat daripada mereferensi dari luar lingkungannya :
jadi, hasilnya adalah "Pete"
disini.
Tapi jika disana tidak ada let name
didalam makeWorker()
, maka pencarian akan berlanjut ke luar dan mengambil variabel global seperti yang bisa kita lihat diatas. Di kasus ini hasilnya akan menjadi "John"
.