Zagnieżdżone funkcje w JavaScript
Załóżmy, że mamy funkcję, która przyjmuje jako parametry dwie liczby i zwraca sumę kwadratów tych liczb:
function func(num1, num2) {
return num1 * num1 + num2 * num2;
}
console.log(func(2, 3)); // wyświetli 13 (wynik 2 * 2 + 3 * 3)
Wyciągnijmy operację podnoszenia do kwadratu
do funkcji pomocniczej square:
function square(num) {
return num * num;
}
function func(num1, num2) {
return square(num1) + square(num2);
}
console.log(func(2, 3)); // wyświetli 13
Załóżmy, że jesteśmy pewni, że funkcja square
będzie używana tylko wewnątrz funkcji func
i w żadnej innej.
W takim przypadku byłoby wygodnie sprawić, żeby nikt przypadkowo jej nie użył (ty sam lub inny programista pracujący razem z tobą).
W JavaScript istnieje eleganckie rozwiązanie: można
umieścić naszą funkcję pomocniczą square
wewnątrz func. W tym przypadku
nasza funkcja pomocnicza będzie dostępna
tylko wewnątrz func, a na zewnątrz - nie będzie.
Zróbmy to:
function func(num1, num2) {
function square(num) {
return num * num;
}
return square(num1) + square(num2);
}
console.log(func(2, 3)); // wyświetli 13
Próba wywołania square na zewnątrz func
skutkuje błędem:
function func(num1, num2) {
function square(num) {
return num * num;
}
return square(num1) + square(num2);
}
console.log(square(2)); //!! spowoduje błąd
Stwórz funkcję func, która parametrami
będzie przyjmować dwie liczby, a zwracać sumę
kwadratu pierwszej liczby i sześcianu drugiej liczby.
Stwórz w tym celu funkcję pomocniczą
square, podnoszącą liczbę do kwadratu,
oraz funkcję pomocniczą cube, podnoszącą
liczbę do sześcianu.