Fungsi yang Mengembalikan Fungsi dalam JavaScript
Misalkan kita memiliki fungsi seperti ini, yang mengembalikan sebuah string:
function func() {
return '!';
}
let result = func();
console.log(result); // akan menampilkan '!'
Sekarang, dengan analogi yang sama, mari kita kembalikan sebuah fungsi anonim:
function func() {
return function() {
return '!';
};
}
let result = func(); // variabel result akan berisi fungsi
console.log(result); // akan menampilkan 'function() {return '!';}'
Seperti yang Anda lihat, variabel result sekarang
merupakan sebuah fungsi. Mari kita tampilkan
hasil eksekusinya di konsol. Untuk melakukannya, tuliskan
tanda kurung untuknya:
function func() {
return function() {
return '!';
};
}
let result = func();
console.log( result() ); // akan menampilkan '!'
Karena pemanggilan func() mengembalikan sebuah fungsi,
maka kita bisa langsung memanggil fungsi yang dikembalikan
tersebut, seperti ini: func()() - tanda kurung
pertama mendapatkan hasil dari fungsi
func (yang mana hasilnya sendiri adalah sebuah fungsi),
dan tanda kurung kedua diterapkan pada hasil
func tersebut.
Mari kita coba:
function func() {
return function() {
return '!';
};
}
console.log( func()() ); // akan menampilkan '!'
Buatlah fungsi func1, yang ketika
dipanggil seperti ini: func1()(), mengembalikan
angka 1. Buat juga fungsi serupa
func2, yang mengembalikan angka 2.
Carilah jumlah hasil dari kedua fungsi tersebut.