Вложенные функции в 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, возводящую число в куб.