Funzioni annidate in JavaScript
Supponiamo di avere una funzione che accetta come parametri due numeri e restituisce la somma dei quadrati di questi numeri:
function func(num1, num2) {
return num1 * num1 + num2 * num2;
}
console.log(func(2, 3)); // visualizzerà 13 (risultato di 2 * 2 + 3 * 3)
Spostiamo l'operazione di elevazione al quadrato
in una funzione di supporto square:
function square(num) {
return num * num;
}
function func(num1, num2) {
return square(num1) + square(num2);
}
console.log(func(2, 3)); // visualizzerà 13
Supponiamo di essere sicuri che la funzione square
sarà utilizzata solo all'interno della funzione func
e in nessun'altra.
In questo caso sarebbe comodo fare in modo che nessuno la utilizzi accidentalmente (voi stessi o un altro programmatore che lavora insieme a voi).
JavaScript ha una soluzione elegante: possiamo
posizionare la nostra funzione di supporto square
all'interno di func. In questo caso
la nostra funzione di supporto sarà accessibile
solo all'interno di func, e non all'esterno.
Facciamolo:
function func(num1, num2) {
function square(num) {
return num * num;
}
return square(num1) + square(num2);
}
console.log(func(2, 3)); // visualizzerà 13
Tentare di chiamare square dall'esterno di func
porterà a un errore:
function func(num1, num2) {
function square(num) {
return num * num;
}
return square(num1) + square(num2);
}
console.log(square(2)); //!! darà un errore
Crea una funzione func che accetti come parametri
due numeri e restituisca la somma del
quadrato del primo numero con il cubo del secondo numero.
Crea a questo scopo una funzione di supporto
square, che eleva un numero al quadrato,
e una funzione di supporto cube, che eleva
un numero al cubo.