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:
function 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:
function 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:
function 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:
function func(num1, num2) {
function square(num) {
return num * num;
}
return square(num1) + square(num2);
}
console.log(square(2)); //!! dará un error
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.