Salam,
saya coba jawab yah, CMIIW.
"a closure is a first-class function with free variables that are
bound in the lexical environment.", wikipedia
so, closure itu kayak rental mobil tapi udah ada sopirnya. posisi
untuk sopir dianggap udah ditutup (nggak bisa diganti karena udah
ditunjuk sama rentalnya)
nah, sekarang tinggal diganti mobil dan rental adalah sebuah fungsi
kayak contoh kode berikut.
function sewa(jenismobil){
var driver = "Peb"
function mobil(tujuan){
return "driving to "+tujuan+" using "+jenismobil+" driven by "+driver;
}
return mobil
}
mobilsewaan = sewa("APV")
alert(mobilsewaan("bandung"))
nah, variabel jenismobil dan driver di dalam definisi fungsi mobil()
itu udah nggak bisa diganti lagi karena udah terikat ketika dibalikin
sama fungsi sewa().
Salam kenal dan selamat datang.
Grup nya baru di buat kemarin, postingan pertama langsung yang susah :)
Tapi emang closure wajib hukumnya buat javascript programmer.
Closure hubungannya sama scoping. Closure berguna banget buat yang
banyak main callback2.
Ada yang namanya global environment. Di bahasa manapun ada.
Kalau kita pake jquery misalnya, variable $ ada di global.
kalau kita define fungsi di global environment misalnya:
function fn1() {
var localvar = 10;
function inner1() {
return localvar;
}
return inner1;
}
dan kita panggil fn1();
Javascript buat local scoping baru. localvar tidak bisa kelihatan dari
luar fungsi fn1.
Kalau kita pake localvar diluar misalnya:
console.log(localvar); // error localvar undefined
SAMPAI DISINI MASIH SAMA AJA KONSEPNYA SEPERTI BIASA
Magic nya baru disini. Kalau kita panggil fn1 dan assign return value
ke variable di luar scope fn1:
var fn = fn1();
localvar tidak hilang!
kalau kita panggil:
fn();
fungsi diatas mengembalikan 10.
KOK BISA NGGAK HILANG?
Nah itu gue gak bisa jelaskan :) Mungkin perlu dijelaskan tentang heap
dan stack untuk menjelaskannya. Tapi terlalu implementation detail.
2010/11/4 peb aryan <peb...@gmail.com>