Fungsi Bersarang dalam JavaScript
Misalkan kita memiliki fungsi yang menerima dua angka sebagai parameter dan mengembalikan jumlah kuadrat dari angka-angka tersebut:
function func(num1, num2) {
return num1 * num1 + num2 * num2;
}
console.log(func(2, 3)); // menampilkan 13 (hasil 2 * 2 + 3 * 3)
Mari kita pindahkan operasi pangkat dua ke
dalam fungsi bantu square:
function square(num) {
return num * num;
}
function func(num1, num2) {
return square(num1) + square(num2);
}
console.log(func(2, 3)); // menampilkan 13
Misalkan kita yakin bahwa fungsi square
hanya akan digunakan dalam fungsi func
dan tidak di tempat lain.
Dalam hal ini, akan lebih mudah jika tidak ada yang tidak sengaja menggunakannya (Anda sendiri atau programmer lain yang bekerja bersama Anda).
JavaScript memiliki solusi yang elegan: kita bisa
menempatkan fungsi bantu square
ke dalam func. Dalam kasus ini,
fungsi bantu kita hanya akan dapat diakses
di dalam func, dan tidak dari luar.
Mari kita lakukan ini:
function func(num1, num2) {
function square(num) {
return num * num;
}
return square(num1) + square(num2);
}
console.log(func(2, 3)); // menampilkan 13
Upaya untuk memanggil square dari luar func
akan menyebabkan error:
function func(num1, num2) {
function square(num) {
return num * num;
}
return square(num1) + square(num2);
}
console.log(square(2)); //!! akan menghasilkan error
Buatlah fungsi func yang parameternya
akan menerima dua angka, dan mengembalikan jumlah
kuadrat angka pertama dengan pangkat tiga angka kedua.
Buatlah untuk ini fungsi bantu
square, untuk memangkatkan angka menjadi kuadrat,
dan fungsi bantu cube, untuk memangkatkan
angka menjadi kubus.