Fungsi yang Mengembalikan Fungsi dalam JavaScript
Katakan kita mempunyai fungsi seperti berikut yang mengembalikan rentetan:
function func() {
return '!';
}
let result = func();
console.log(result); // akan memaparkan '!'
Sekarang, secara analogi, mari kita kembalikan fungsi tanpa nama dan bukannya rentetan:
function func() {
return function() {
return '!';
};
}
let result = func(); // pembolehubah result akan menjadi fungsi
console.log(result); // akan memaparkan 'function() {return '!';}'
Seperti yang anda lihat, pembolehubah result sekarang
merupakan sebuah fungsi. Mari kita paparkan
hasil kerjanya dalam konsol. Untuk melakukan ini, tulis
tanda kurung kepadanya:
function func() {
return function() {
return '!';
};
}
let result = func();
console.log( result() ); // akan memaparkan '!'
Oleh kerana panggilan func() mengembalikan sebuah fungsi,
maka kita boleh terus memanggil fungsi yang dikembalikan
itu, seperti ini: func()() - tanda kurung
pertama mendapatkan hasil fungsi
func (yang sendiri merupakan sebuah fungsi),
manakala tanda kurung kedua diaplikasikan kepada hasil
func.
Mari kita cuba:
function func() {
return function() {
return '!';
};
}
console.log( func()() ); // akan memaparkan '!'
Buat fungsi func1, yang apabila
dipanggil seperti ini: func1()(), mengembalikan
nombor 1. Buat fungsi serupa
func2, yang mengembalikan nombor 2.
Cari jumlah hasil fungsi-fungsi ini.