Funciones anidadas en JavaScript

Supongamos que tenemos una función que acepta como parámetros dos números y devuelve la suma de los cuadrados de estos números:

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

console.log(func(2, 3)); // mostrará 13 (resultado de 2 * 2 + 3 * 3)

Saquemos la operación de elevar al cuadrado a una función auxiliar square:

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

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

console.log(func(2, 3)); // mostrará 13

Supongamos que estamos seguros de que la función square se utilizará solo en la función func y en ninguna más.

En este caso sería conveniente hacer que nadie la use accidentalmente (usted mismo u otro programador que trabaje junto con usted).

JavaScript tiene una solución elegante: se puede colocar nuestra función auxiliar square dentro de func. En este caso nuestra función auxiliar solo estará disponible dentro de func, y fuera de ella no lo estará.

Hagamos esto:

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

console.log(func(2, 3)); // mostrará 13

El intento de llamar a square fuera de func provocará un error:

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

console.log(square(2)); //!! dará un error
Задание 1

Haga la función func que acepte como parámetros dos números, y devuelva la suma del cuadrado del primer número con el cubo del segundo número. Para ello, haga la función auxiliar square, que eleve un número al cuadrado, y la función auxiliar cube, que eleve un número al cubo.