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:

javascriptfunction 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:

javascriptfunction 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:

javascriptfunction 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:

javascriptfunction func(num1, num2) {
  function square(num) {
    return num * num;
  }
  
  return square(num1) + square(num2);
}

console.log(square(2)); //!! spowoduje błąd
Задание 1

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.