Gnezdene funkcije v JavaScriptu
Recimo, da imamo funkcijo, ki kot parameter sprejme dve števili in vrne vsoto kvadratov teh števil:
function func(num1, num2) {
return num1 * num1 + num2 * num2;
}
console.log(func(2, 3)); // izpiše 13 (rezultat 2 * 2 + 3 * 3)
Operacijo kvadriranja izločimo
v pomožno funkcijo square:
function square(num) {
return num * num;
}
function func(num1, num2) {
return square(num1) + square(num2);
}
console.log(func(2, 3)); // izpiše 13
Recimo, da smo prepričani, da bo funkcija square
uporabljena samo v funkciji func
in nikjer drugje.
V tem primeru bi bilo priročno narediti tako, da je nihče po naključju ne uporabi (vi sami ali drug programer, ki dela skupaj z vami).
V JavaScript obstaja elegantna rešitev: našo
pomožno funkcijo square lahko
postavimo noter v func. V tem primeru
bo naša pomožna funkcija dostopna
samo znotraj func, zunaj pa - ne.
Naredimo to:
function func(num1, num2) {
function square(num) {
return num * num;
}
return square(num1) + square(num2);
}
console.log(func(2, 3)); // izpiše 13
Poskus klica square zunaj func
bo povzročil napako:
function func(num1, num2) {
function square(num) {
return num * num;
}
return square(num1) + square(num2);
}
console.log(square(2)); //!! bo izpisalo napako
Naredite funkcijo func, ki bo parametroma
sprejela dve števili, vrnila pa naj vsoto
kvadrata prvega števila s kubom drugega števila.
Za to naredite pomožno funkcijo
square, ki število kvadrira,
in pomožno funkcijo cube, ki število dvigne
na kub.