Fungsi Bersarang dalam JavaScript
Katakan kita mempunyai fungsi yang menerima dua nombor sebagai parameter dan mengembalikan hasil tambah kuasa dua nombor-nombor tersebut:
function func(num1, num2) {
return num1 * num1 + num2 * num2;
}
console.log(func(2, 3)); // akan memaparkan 13 (hasil 2 * 2 + 3 * 3)
Mari kita asingkan operasi kuasa dua
kepada fungsi pembantu square:
function square(num) {
return num * num;
}
function func(num1, num2) {
return square(num1) + square(num2);
}
console.log(func(2, 3)); // akan memaparkan 13
Katakan kita yakin bahawa fungsi square
hanya akan digunakan dalam fungsi func
dan tidak di mana-mana lagi.
Dalam kes ini, adalah lebih mudah untuk memastikan tiada orang yang secara tidak sengaja menggunakannya (anda sendiri atau pengaturcara lain yang bekerja bersama anda).
JavaScript mempunyai penyelesaian yang elegan: kita
boleh meletakkan fungsi pembantu square
ke dalam func. Dalam kes ini,
fungsi pembantu kita hanya boleh diakses
dalam func, tetapi tidak dari luar.
Mari lakukan ini:
function func(num1, num2) {
function square(num) {
return num * num;
}
return square(num1) + square(num2);
}
console.log(func(2, 3)); // akan memaparkan 13
Cubaan untuk memanggil square dari luar func
akan menyebabkan ralat:
function func(num1, num2) {
function square(num) {
return num * num;
}
return square(num1) + square(num2);
}
console.log(square(2)); //!! akan memberikan ralat
Buat fungsi func yang parameternya
akan menerima dua nombor, dan mengembalikan hasil tambah
kuasa dua nombor pertama dengan kuasa tiga nombor kedua.
Buat untuk ini fungsi pembantu
square, yang memangkatkan nombor kuasa dua,
dan fungsi pembantu cube, yang memangkatkan
nombor kuasa tiga.