Gnezdene funkcije v JavaScriptu

Recimo, da imamo funkcijo, ki kot parameter sprejme dve števili in vrne vsoto kvadratov teh števil:

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

console.log(func(2, 3)); // izpiše 13 (rezultat 2 * 2 + 3 * 3)

Operacijo kvadriranja izločimo v pomožno funkcijo square:

javascriptfunction square(num) {
  return num * num;
}

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

console.log(func(2, 3)); // izpiše 13

Recimo, da smo prepričani, da bo funkcija square uporabljena samo v funkciji func in nikjer drugje.

V tem primeru bi bilo priročno narediti tako, da je nihče po naključju ne uporabi (vi sami ali drug programer, ki dela skupaj z vami).

V JavaScript obstaja elegantna rešitev: našo pomožno funkcijo square lahko postavimo noter v func. V tem primeru bo naša pomožna funkcija dostopna samo znotraj func, zunaj pa - ne.

Naredimo to:

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

console.log(func(2, 3)); // izpiše 13

Poskus klica square zunaj func bo povzročil napako:

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

console.log(square(2)); //!! bo izpisalo napako
Задание 1

Naredite funkcijo func, ki bo parametroma sprejela dve števili, vrnila pa naj vsoto kvadrata prvega števila s kubom drugega števila. Za to naredite pomožno funkcijo square, ki število kvadrira, in pomožno funkcijo cube, ki število dvigne na kub.