Funcții Încuibate în JavaScript
Să presupunem că avem o funcție care primește ca parametru două numere și returnează suma pătratelor acestor numere:
function func(num1, num2) {
return num1 * num1 + num2 * num2;
}
console.log(func(2, 3)); // va afișa 13 (rezultatul 2 * 2 + 3 * 3)
Să scoatem operația de ridicare la pătrat
într-o funcție auxiliară square:
function square(num) {
return num * num;
}
function func(num1, num2) {
return square(num1) + square(num2);
}
console.log(func(2, 3)); // va afișa 13
Să presupunem că suntem siguri că funcția square
va fi utilizată doar în funcția func
și în nicio altă.
În acest caz ar fi convenabil să facem astfel încât să n-o poată folosi accidental nimeni (dumneavoastră însuși sau un alt programator care lucrează împreună cu dumneavoastră).
În JavaScript există o soluție elegantă: putem
să plasăm funcția noastră auxiliară square
în interiorul lui func. În acest caz
funcția noastră auxiliară va fi accesibilă
doar în interiorul lui func, iar în exterior - nu.
Să facem acest lucru:
function func(num1, num2) {
function square(num) {
return num * num;
}
return square(num1) + square(num2);
}
console.log(func(2, 3)); // va afișa 13
O încercare de a apela square din exteriorul lui func
va duce la o eroare:
function func(num1, num2) {
function square(num) {
return num * num;
}
return square(num1) + square(num2);
}
console.log(square(2)); //!! va da o eroare
Creați o funcție func care ca parametri
va primi două numere, iar ca rezultat va returna suma
pătratului primului număr cu cubul celui de-al doilea număr.
Creați pentru aceasta o funcție auxiliară
square, care ridică numărul la pătrat,
și o funcție auxiliară cube, care ridică
numărul la cub.