Closures en JavaScript que son y para qué sirven
Cuando definimos una función y adentro otra función precisamente de eso se trata los closures pero veamos cómo funcionan y para qué sirven. Una clausura o closure en pocas palabras me permite acceder al ámbito de una función exterior desde una función interior. Veamos algunos ejemplos.
function home() {
const nombre = 'Aprendiendo JavaScript'
function muestraNombre() {
console.log(nombre)
}
return muestraNombre
}
const init = home()
init()
Este ejemplo lo que tenemos es una función en la cual devolvemos una función muestraNombre() la cual retornamos y en la parte exterior ejecutamos home() y guardamos en init el resultado de la función interna muestrNombre() en este caso nuestro closure seria init() la cual ejecutamos en la última línea de código.
Una cosa especial para dejarlo más claro es que cuando definimos nuestro closure init() lo que sucede con esta función es que guarda el entorno donde fue creada por esta razón la variable nombre todavía existe al final cuando ejecutamos init(). Un ejemplo más.
function creaSumador(x) {
return function (y) {
return x + y
}
}
const suma5 = creaSumador(5)
const suma10 = creaSumador(10)
console.log(suma5(2))
// muestra 7
console.log(suma10(3))
// muestra 13
Lo que tenemos acá son dos closures suma5 y suma10 lo cual comparten el mismo cuerpo de la función creaSumador(), pero almacenas diferentes entornos. En el entorno de suma5 (x = 5) y suma10 (x = 10).
Expresión de Función Inmediatamente invocada - Immediately-invoked Function Expression (IIFE)
Esta técnica se usa para ejecutar inmediatamente nuestro programa o script, esto también es un tipo de closures ya que podemos tener funciones internas el cual nos permite tener un estilo de variables privadas el cual no podemos acceder desde afuera.
(function(){
function metodoPrivado () {
console.log('Metodo privado')
}
const nombre = "John Serrano"
console.log(nombre)
})()
Conclusiones
Bueno como vimos al principio el concepto de los closures puede ser algo complejo, pero aprendiendo los conceptos y de que se tratan podemos ver que no es tan complejo como se piensa al principio, teniendo este conocimiento presente nos puede ayudar a la hora de plantear soluciones a problemas que se nos presente cuando estamos desarrollando. También es verdad que puedes desarrollar sin necesidad de usar los closures pero no esa de más tenerlos presente y conocerlos.
Soy John Serrano. Desarrollador Web Full-Stack. Entusiasta de las tecnologías web: JavaScript, Node.js, Docker, Firebase, React, etc. Me puedes encontrar en las siguientes redes sociales:
Si te gusta lo que lees puedes apoyarme haciendo una donación con PayPal, de antemano gracias por tu apoyo.
Puedes donar criptomonedas con:
TRX Tron red TRC20:
TR3nVEsRexQkdXasRLAXLW2n7DmyS7ksrq
BTC Bitcoin red BTC:
1Bd849Xr3T3i9nn96uF2JuYhp98wZyod6Q
BNB Smart Chain BSC:
0xe8ac8dc8e56208d4dad5f719ba627436187acc16
No hay un amor más grande que el dar la vida por los amigos. Juan 15:13
¿Te gusta lo que lees?
SuscríbeteOtros artículos

¿Que es Firebase y que podemos hacer? Configuración inicial
Firebase es un conjunto de herramientas conocido como BAAS (Backend as a Service) o Backend como Servicio el cual nos brinda servicios para desarrollar nuestra....

Introducción a React Context con los Hooks de React
Gracias a los context de React podemos pasar datos a través de componentes sin necesidad de pasar esos datos por los props manualmente en cada nivel....

Fundamentos de Programación con JavaScript mi primer Ebook
Aprende los fundamentos de programación con uno de los lenguajes de programación más demandados de la industria. Aprende desde cero hasta dominar JavaScript....