Угњежђене функције у JavaScript-у

Претпоставимо да имамо функцију која прима два броја као параметре и враћа збир њихових квадрата:

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

console.log(func(2, 3)); // исписаће 13 (резултат 2 * 2 + 3 * 3)

Хајде да операцију квадрирања извучемо у помоћну функцију square:

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

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

console.log(func(2, 3)); // исписаће 13

Претпоставимо да смо сигурни да ће функција square бити коришћена само у функцији func и нигде више.

У том случају било би згодно да се осигурамо да је нико случајно не користи (нити ви сами нити други програмер који ради са вама).

JavaScript има елегантно решење: можемо нашу помоћну функцију square сместити унутар func. Тако ће наша помоћна функција бити доступна само унутар func, а споља - неће.

Урадимо то:

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

console.log(func(2, 3)); // исписаће 13

Покушај да се позове square изван func ће резултирати грешком:

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

console.log(square(2)); //!! исписаће грешку
Задание 1

Направите функцију func, која параметрима прима два броја, а враћа збир квадрата првог броја и куба другог броја. Направите за то помоћну функцију square, која квадрира број, и помоћну функцију cube, која диже број на куб.