Penjumlahan dengan closure
Buatlah sebuah fungsi sum
yang bekerja seperti ini: sum(a)(b) = a+b
.
Ya, seperti ini, dengan kurung ganda (bukan salah ketik).
Sebagai contoh:
sum(1)(2) = 3
sum(5)(-1) = 4
Agar kurung kedua berhasil, yang pertama harus mengembalikan sebuah fungsi.
Seperti ini:
function sum(a) {
return function(b) {
return a + b; // mengambil "a" dari lingkungan leksikal luar
};
}
alert( sum(1)(2) ); // 3
alert( sum(5)(-1) ); // 4