0% encontró este documento útil (0 votos)
12 vistas5 páginas

Entendiendo Closures en JavaScript

Este documento explica los conceptos de closures, funciones de fábrica y callbacks en JavaScript. Un closure permite que una función interior acceda al ámbito de una función exterior, creando referencias. Las funciones de fábrica crean nuevas funciones parametrizadas. Los callbacks son funciones pasadas como argumentos para ser ejecutadas más tarde.

Cargado por

Healthy Market
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
12 vistas5 páginas

Entendiendo Closures en JavaScript

Este documento explica los conceptos de closures, funciones de fábrica y callbacks en JavaScript. Un closure permite que una función interior acceda al ámbito de una función exterior, creando referencias. Las funciones de fábrica crean nuevas funciones parametrizadas. Los callbacks son funciones pasadas como argumentos para ser ejecutadas más tarde.

Cargado por

Healthy Market
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd

JavaScript Avanzado II

Closures
Una clausura o closure es una función que guarda referencias del estado adyacente (ámbito
léxico). En otras palabras, una clausura permite acceder al ámbito de una función exterior
desde una función interior. En JavaScript, las clausuras se crean cada vez que una función es
creada.

Ejemplo:

Verifiquemos paso a paso lo que pasa en el ejemplo anterior, primero se creará el


contexto de ejecución global, en esta etapa el intérprete guardará espacio para la
declaración de la función saludar. Luego cuando se encuentra con la invocación a la
función saludar, va a crear un nuevo contexto de ejecución, y como vemos la varaible
saludo va a tomar el valor que le pasamos por parámetro: “Hola”. El stack quedaría
como está representado en la primera parte de la figura de abajo.
Ejemplo de Closures

¿Por qué [Link] siempre da 3?


Esto va de la mano con el contexto de ejecución, en un primer momento se creará el
contexto global, donde va a estar definida la función crearFuncion y también el arreglo
arr.
En un segundo momento, se va a crear un contexto de la función crearFuncion que fue
ejecutada, dentro de ella se reserva espacio para un arreglo llamado arreglo, y para la
variable i
Cuando en intérprete llega a la línea return destruye el contexto de ejecución de
crearfuncion y volvemos al contexto global
Function Factory
Vamos a ver un patrón para crear funciones, muy usado en el desarrollo de
frameworks, y existe gracias a los closures.
Veamos el siguiente código, primero definimos una función que va a retornar otra
función (esta seria nuestra fábrica de funciones), esta recibe como parámetro el
lenguaje de saludo, y retorna una función que salude (consol loguee)

Cada vez que llamamos una función se genera un contexto de ejecución.


Closures and callbacks
Ahora que sabemos los que son los closures, si pensamos en todo lo que hicimos
alguna vez con javascript, es muy probable que nos demos cuenta que ya lo veníamos
usando (talvez sin saberlo)
Por ejemplo:

//Creamos un execution context cuando llamamos la función saludarMasTarde,

Ejemplo

Bind ()
El método bind() crea una nueva función, que cuando es llamada, asigna a su operador
this el valor entregado, con una secuencia de argumentos dados, precediendo a
cualquiera entregados cuando la función es llamada.
Call ()
Cuando llamamos al método call () el primer argumento debe ser el objeto al que
apuntará this. Después se puede pasar otros argumentos que serían pasados a la
función que estamos llamando, si nuestra función recibiera argumentos usáramos call
()

Apply ()
La función apply es casi igual que call () necesita dos argumentos, el primero que es el
objeto a bindear, y el segundo parámetro es un arreglo y en este arreglo pasamos los
argumentos que va a usar la función.

También podría gustarte