kembali ke pelajaran

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".