Hoy quiero hablarles sobre uno de los conceptos más interesantes en JavaScript: los closures
.
.
Un closure
es una función que guarda referencias a variables en su entorno léxico, incluso después de que la función ha sido devuelta. Esto significa que una función que se define dentro de otra función (la función interna) tiene acceso a las variables de la función externa (el ámbito léxico).
.
En términos más simples, un closure
permite que una función acceda a variables que no están dentro de su propio ámbito. Esto es útil para crear funciones más flexibles y reutilizables.
.
Ejemplo:
function sumar(a) { // función declarativa que recibe un parámetro 'a'
return function(b) { // rotorno de función anónima que recibe un parámetro 'b'
return a + b; // esa función retorna la suma de 'a' y 'b'
}
}
// declaración de variables con llamadas de función 'sumar' y un parámetro 'a'
let suma1 = sumar(5);
let suma2 = sumar(10);
console.log(suma1(2)); // devuelve 7
console.log(suma2(3)); // devuelve 13
En este ejemplo, sumar()
es una función que devuelve otra función. La función interna es el closure
, y tiene acceso a la variable a de la función externa.
.
Al llamar a sumar(5)
, se crea un closure
que guarda el valor de a
como 5
. Luego, al llamar a suma1(2)
, la función interna suma 2
al valor de a (5)
y devuelve 7
.
.
De manera similar, al llamar a sumar(10)
, se crea otro closure
que guarda el valor de a
como 10
. Luego, al llamar a suma2(3)
, la función interna suma 3
al valor de a (10)
y devuelve 13
.
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?