Ugniježđene funkcije u JavaScriptu
Neka imamo funkciju koja kao parametar prima dva broja i vraća zbir kvadrata tih brojeva:
function func(num1, num2) {
return num1 * num1 + num2 * num2;
}
console.log(func(2, 3)); // ispisaće 13 (rezultat 2 * 2 + 3 * 3)
Hajde da operaciju kvadriranja izdvojimo
u pomoćnu funkciju square:
function square(num) {
return num * num;
}
function func(num1, num2) {
return square(num1) + square(num2);
}
console.log(func(2, 3)); // ispisaće 13
Pretpostavimo da smo sigurni da će funkcija square
biti korišćena samo u funkciji func
i nigde drugo.
U tom slučaju bi bilo zgodno da niko slučajno ne može da je iskoristi (ni vi sami ni drugi programer koji radi zajedno s vama).
U JavaScriptu postoji elegantno rešenje: možemo
našu pomoćnu funkciju square
smestiti unutar func. U ovom slučaju
naša pomoćna funkcija će biti dostupna
samo unutar func, a spolja - neće.
Uradimo ovo:
function func(num1, num2) {
function square(num) {
return num * num;
}
return square(num1) + square(num2);
}
console.log(func(2, 3)); // ispisaće 13
Pokušaj da se pozove square spolja func
će dovesti do greške:
function func(num1, num2) {
function square(num) {
return num * num;
}
return square(num1) + square(num2);
}
console.log(square(2)); //!! daće grešku
Napravite funkciju func, koja će parametrima
primatimati dva broja, a vraćati zbir
kvadrata prvog broja sa kubom drugog broja.
Napravite za ovo pomoćnu funkciju
square, koja kvadrira broj,
i pomoćnu funkciju cube, koja podiže
broj na kub.