Ugniježđene funkcije u JavaScriptu

Neka imamo funkciju koja kao parametar prima dva broja i vraća zbir kvadrata tih brojeva:

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

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

Hajde da operaciju kvadriranja izdvojimo u pomoćnu funkciju square:

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

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

console.log(func(2, 3)); // ispisaće 13

Pretpostavimo da smo sigurni da će funkcija square biti korišćena samo u funkciji func i nigde drugo.

U tom slučaju bi bilo zgodno da niko slučajno ne može da je iskoristi (ni vi sami ni drugi programer koji radi zajedno s vama).

U JavaScriptu postoji elegantno rešenje: možemo našu pomoćnu funkciju square smestiti unutar func. U ovom slučaju naša pomoćna funkcija će biti dostupna samo unutar func, a spolja - neće.

Uradimo ovo:

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

console.log(func(2, 3)); // ispisaće 13

Pokušaj da se pozove square spolja func će dovesti do greške:

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

console.log(square(2)); //!! daće grešku
Задание 1

Napravite funkciju func, koja će parametrima primatimati dva broja, a vraćati zbir kvadrata prvog broja sa kubom drugog broja. Napravite za ovo pomoćnu funkciju square, koja kvadrira broj, i pomoćnu funkciju cube, koja podiže broj na kub.