Chuck's Academy

JavaScript Intermedio

Funciones y Closures en JavaScript

Las funciones en JavaScript son bloques de código que pueden ejecutarse de forma independiente, y los closures son una característica poderosa de las funciones que permite que conserven su contexto de ejecución. En este capítulo, exploraremos las funciones avanzadas y el concepto de closures.

Funciones de Orden Superior

Una función de orden superior es aquella que puede tomar otras funciones como argumentos o retornar una función. Esto permite construir patrones de código más flexibles.

javascript
"Aquí, 'greet' devuelve otra función que acepta 'message' como parámetro, permitiendo crear un saludo personalizado para 'John'."

Closures

Esta imagen muestra un diagrama de como funciona ClosuresEsta imagen muestra un diagrama de como funciona Closures

Un closure es una función que recuerda el entorno en el que fue creada, incluso después de que ese entorno haya terminado. Esto significa que las variables de un closure permanecen disponibles incluso fuera de su alcance original.

javascript
"En este ejemplo, la función 'counter' crea una variable 'count' y devuelve una función que incrementa 'count' cada vez que es llamada. Aunque 'counter' se ejecuta solo una vez, 'count' permanece en memoria debido al closure."

Aplicación de Closures en la Programación

Los closures son útiles para crear variables privadas y funciones que conservan un estado entre llamadas.

javascript
"Aquí, 'makeCounter' devuelve un objeto con métodos que pueden manipular 'count'. Estos métodos mantienen acceso a 'count' gracias al closure."

Funciones como Parámetros

Pasar funciones como argumentos es común en JavaScript, especialmente en métodos como forEach, map, y filter.

javascript
"En este código, 'forEach' recibe una función anónima que multiplica cada número del array 'numbers' por dos y lo imprime."

Funciones que Devuelven Funciones

Este patrón es común cuando se quiere crear funciones más específicas a partir de funciones generales.

javascript
"En este ejemplo, 'multiplyBy' recibe un 'factor' y devuelve una función que multiplica el número dado por ese factor. Creamos 'double', una función que duplica números al pasar el factor 2."

Scope y Contexto en Closures

Es importante entender cómo los closures retienen el contexto de ejecución y pueden acceder a variables definidas en el momento de su creación.

javascript
"Aquí, la función 'inner' puede acceder a 'globalVar' y 'outerVar', además de su propia variable 'innerVar', demostrando el alcance de los closures."

Ejemplos Prácticos de Closures

Los closures son utilizados frecuentemente para encapsular lógica y proteger datos, especialmente en la creación de funciones personalizadas o módulos.

javascript
"En este caso, 'createBankAccount' define un saldo inicial y devuelve métodos para depositar y retirar fondos. Los métodos acceden al balance usando un closure, y la variable 'balance' está protegida del acceso directo externo."

Conclusión

Las funciones y los closures son conceptos avanzados en JavaScript que permiten modularizar y proteger mejor el código. Al entender cómo funcionan los closures y las funciones de orden superior, se pueden construir aplicaciones más robustas y mantenibles.


Pregúntame lo que sea