El estudio de funciones en JavaScript es crucial para entender toda la lógica del lenguaje, puesto que es prácticamente imposible encontrar un programa escrito en este lenguaje que no incluya un gran número de ellas. Veremos qué ventajas proporciona su uso, conoceremos la sintaxis de todas las alternativas posibles para escribir funciones, entenderemos cómo afecta el ámbito de las variables a los programas, interiorizaremos el funcionamiento de los parámetros y sus tipos, analizaremos todos los tipos de funciones y entenderemos sus diferencias y sus propósitos, introduciremos la estrategia recursiva para resolver problemas y, finalmente, extenderemos la funcionalidad de estructuras de datos usando funciones.
Fe de erratas
No se ha notificado ninguna errata hasta el momento.
Aclaraciones
No se ha añadido ninguna aclaración hasta el momento.
Profundización de conceptos
En la página 125 del libro comenzamos a hablar de las Clausuras, un concepto interesante de JavaScript que por razones de espacio no pudo ahondarse todo lo que me hubiera gustado. Por eso, voy a reescribirlo desde un nuevo enfoque y con algún ejemplo más esclarecedor.
4.4.7. Clausuras.
Sé que puede sonar un poco complejo al principio, pero no te preocupes, lo explicaré de una manera sencilla y con ejemplos para que todos lo entiendáis.
Como ya sabes, podemos crear y utilizar funciones para organizar y reutilizar código en nuestros programas.
Las clausuras son una característica muy poderosa y útil en JavaScript que nos permite hacer cosas realmente interesantes con las funciones. En términos sencillos, una clausura es una función que “recuerda” el entorno en el que fue creada. Esto significa que puede acceder a las variables que estaban en su alcance cuando se creó, incluso si esas variables ya no están en el alcance actual.
Veamos un ejemplo sencillo para entender mejor el concepto de clausuras:
function creaSaludo(saludo) {
return function(nombre) {
console.log(saludo + ', ' + nombre);
};
}
const saludoEspanol = creaSaludo('Hola');
const saludoIngles = creaSaludo('Hello');
saludoEspanol('Pedro');
saludoIngles('John');
En este ejemplo, tenemos una función llamada creaSaludo que recibe un argumento saludo y devuelve otra función que recibe un argumento nombre. Cuando llamamos a creaSaludo, se crea una nueva función que tiene acceso a la variable saludo del entorno donde fue creada. Por eso, cuando llamamos a saludoEspanol('Pedro'), se muestra “Hola, Pedro” en la consola, y cuando llamamos a saludoIngles('John'), se muestra “Hello, John”.
Ahora bien, ¿por qué es esto importante y útil? Las clausuras nos permiten hacer cosas como:
- Encapsulamiento de variables: podemos “ocultar” variables de manera que solo sean accesibles por ciertas funciones, lo que nos permite controlar mejor el flujo de datos en nuestro programa.
- Funciones de fábrica: como en el ejemplo anterior, podemos crear funciones que generen otras funciones con características específicas.
- Emulación de variables privadas: en JavaScript, no hay soporte nativo para variables privadas en objetos, pero podemos emular este comportamiento utilizando clausuras.
Espero que ahora tengas una idea más clara de lo que son las clausuras en JavaScript y cómo pueden ser útiles en diferentes situaciones. Como siempre, la práctica hace al maestro, así que te animo a experimentar con clausuras en tus propios proyectos y ejercicios.
Actualizaciones de contenidos
No se han actualizado contenidos hasta el momento.
Ejercicios adicionales resueltos
Todavía no se han incluido nuevos ejercicios resueltos.