SlideShare una empresa de Scribd logo
1 de 47
Descargar para leer sin conexión
ClosuresEl amigo incomprendido de Javascript.
FUNCIONES
Junto a los Objetos
son actores principales.
FUNCIONES
Como Freddy
proveen CONTEXTO.
FUNCIONES
var sabor = "Mermelada";
function crearPizza(rebanadas) {
var sabor = "Margarita";
var helper = function() {
var sabor = "Pepperoni";
console.log("La mia la quiero con " + sabor +
" y " + rebanadas + " rebanadas");
}
console.log("Hacer una pizza se trata sobre todo del
sabor " + sabor);
helper();
}
crearPizza(8);
FUNCIONES
var sabor = "Mermelada";
function crearPizza(rebanadas) {
var sabor = "Margarita";
var helper = function() {
var sabor = "Pepperoni";
console.log("La mia la quiero con " + sabor +
" y " + rebanadas + " rebanadas");
}
console.log("Hacer una pizza se trata sobre todo del
sabor " + sabor);
helper();
}
crearPizza(8);
CONTEXTO GLOBAL
FUNCIONES
var sabor = "Mermelada";
function crearPizza(rebanadas) {
var sabor = "Margarita";
var helper = function() {
var sabor = "Pepperoni";
console.log("La mia la quiero con " + sabor +
" y " + rebanadas + " rebanadas");
}
console.log("Hacer una pizza se trata sobre todo del
sabor " + sabor);
helper();
}
crearPizza(8);
CONTEXTO GLOBAL
CONTEXTO crearPizza
FUNCIONES CONTEXTO GLOBAL
var sabor = "Mermelada";
function crearPizza(rebanadas) {
var sabor = "Margarita";
var helper = function() {
var sabor = "Pepperoni";
console.log("La mia la quiero con " + sabor +
" y " + rebanadas + " rebanadas");
}
console.log("Hacer una pizza se trata sobre todo del
sabor " + sabor);
helper();
}
crearPizza(8);
CONTEXTO crearPizza
CONTEXTO helper
FUNCIONES CONTEXTO GLOBAL
var sabor = "Mermelada";
function crearPizza(rebanadas) {
var sabor = "Margarita";
var helper = function() {
var sabor = "Pepperoni";
console.log("La mia la quiero con " + sabor +
" y " + rebanadas + " rebanadas");
}
console.log("Hacer una pizza se trata sobre todo del
sabor " + sabor);
helper();
}
crearPizza(8);
CONTEXTO crearPizza
CONTEXTO helper
FUNCIONES CONTEXTO GLOBAL
var sabor = "Mermelada";
function crearPizza(rebanadas) {
var sabor = "Margarita";
var helper = function() {
var sabor = "Pepperoni";
console.log("La mia la quiero con " + sabor +
" y " + rebanadas + " rebanadas");
}
console.log("Hacer una pizza se trata sobre todo del
sabor " + sabor);
helper();
}
crearPizza(8);
CONTEXTO crearPizza
CONTEXTO helper
RESULTADO
crearPizza(8);
Hacer una pizza se trata sobre todo del sabor Margarita
La mia la quiero con Pepperoni y 8 rebanadas
Javascript utiliza un Contexto Léxico.
Utilizando el valor de las variables
al momento de definir la función/método.
Ahora, si. Closures
CLOSURES ES:
Una función que es evaluada
a través del contexto léxico
en la que fue definida, junto a
las variables libres
asociadas.
WAT?
CLOSURES ES:
Una declaración de función.
El contexto en la que
fue declarada.
CLOSURES ES:
function crearSaludo(nombre)
{
var meVes = "Si";
return function() {
if(meVes) {
console.log(meVes+' me ves, '+nombre);
}
}
}
var saludo = crearSaludo('pablo');
CLOSURES ES:
function crearSaludo(nombre)
{
var meVes = "Si";
return function() {
if(meVes) {
console.log(meVes+' me ves, '+nombre);
}
}
}
var saludo = crearSaludo('pablo');
CLOSURES ES:
function crearSaludo(nombre)
{
var meVes = "Si";
return function() {
if(meVes) {
console.log(meVes+' me ves, '+nombre);
}
}
}
var saludo = crearSaludo('pablo');
CLOSURES ES:
function crearSaludo(nombre)
{
var meVes = "Si";
return function() {
if(meVes) {
console.log(meVes+' me ves, '+nombre);
}
}
}
var saludo = crearSaludo('Pablo');
saludo();
"Si me ves, Pablo".
CLOSURES ES:
function crearSaludo(nombre)
{
var meVes = "Si";
return function() {
if(meVes) {
console.log(meVes+' me ves, '+nombre);
}
}
}
var saludo = crearSaludo('Christian');
saludo();
"Si me ves, Christian".
Y si devolvemos una función...
...que acepte parámetros?
CLOSURES ES:
function crearSaludo(nombre)
{
return function(numero) {
console.log(
nombre+', me ves '+numero+' veces'
);
}
}
var saludoPablo = crearSaludo('Pablo');
var saludoChris = crearSaludo('Christian');
CLOSURES ES:
function crearSaludo(nombre)
{
return function(numero) {
console.log(
nombre+', me ves '+numero+' veces'
);
}
}
var saludoPablo = crearSaludo('Pablo');
var saludoChris = crearSaludo('Christian');
CLOSURES ES:
var saludoPablo = crearSaludo('Pablo');
var saludoChris = crearSaludo('Christian');
saludoPablo(2);
"Pablo, me ves 2 veces"
saludoPablo(7);
"Pablo, me ves 7 veces"
saludoChris(10)
"Christian, me ves 7 veces"
ZOMFG!
:O
( Y esto para qué sirve? )
USANDO CLOSURES
● Fábrica de funciones
● Ocultar código
● Definir Módulos
● Extender el lenguaje
(si da el tiempo, ejemplo)
Closures
FABRICANDO FUNCIONES
FABRICANDO
FUNCIONES
function crearSaludo(nombre)
{
return function(numero) {
console.log(
nombre+', me ves '+numero+' veces'
);
}
}
var saludoPablo = crearSaludo('Pablo');
var saludoChris = crearSaludo('Christian');
FABRICANDO
FUNCIONES
function resizer(size)
{
return function() {
document.body.style.fontSize = size+'px';
}
}
var size14 = resizer(14);
var size16 = resizer(16);
var size18 = resizer(18);
FABRICANDO
FUNCIONES
$('#size14').on('click', size14);
$('#size16').on('click', size16);
$('#size18').on('click', size18);
<a href="#" id="size14">14</a>
<a href="#" id="size16">16</a>
<a href="#" id="size18">18</a>
Closures
OCULTAR CÓDIGO
PRIVACIDAD DEL CÓDIGO
var Contador = (function() {
var _contador = 0;
return {
incrementar : function() {
_contador++;
},
decrementar : function() {
_contador--;
},
ver : function() {
console.log(_contador);
},
}
})();
PRIVACIDAD DEL CÓDIGO
var Contador = (function() {
var _contador = 0;
return {
incrementar : function() {
_contador++;
},
decrementar : function() {
_contador--;
},
ver : function() {
console.log(_contador);
},
}
})();
INTERFAZ PUBLICA
PRIVACIDAD DEL CÓDIGO
var Contador = (function() {
var _contador = 0;
return {
incrementar : function() {
_contador++;
},
decrementar : function() {
_contador--;
},
ver : function() {
console.log(_contador);
},
}
})();
INTERFAZ PUBLICA
INTERFAZ PRIVADA
PRIVACIDAD DEL CÓDIGO
Contador.ver();
0
Contador.incrementar();
Contador.incrementar();
Contador.incrementar();
Contador.ver();
3
Contador.decrementar();
Contador.decrementar();
Contador.ver();
1
Closures
DEFINIR MÓDULOS
Quizás lo más importante
que veamos sobre Closures
Lo bueno, es que ya lo vimos.
MÓDULOS
var Contador = (function() {
var _contador = 0;
return {
incrementar : function() {
_contador++;
},
decrementar : function() {
_contador--;
},
ver : function() {
console.log(_contador);
},
}
})();
Closure Anónimo
(function() {
/*se ejecuta enseguida*/
}())
MÓDULOS
var Contador = (function() {
var _contador = 0;
return {
incrementar : function() {
_contador++;
},
decrementar : function() {
_contador--;
},
ver : function() {
console.log(_contador);
},
}
})();
MIXINS
var Emergencias = (function($, mod2) {
function privado_alertar() {
$('#alerta').html('Socorro!');
mod2.notificar();
}
return {
alertar : privado_alertar
}
})(jQuery, otroModulo);
EXTENSIÓN DE MÓDULOS
var Emergencias = (function(mod) {
function llamar911() {
window.location.href = "http://911.com";
}
mod.llamar911 = llamar911;
return mod;
})(Emergencias || {});
Suficiente por ahora...
Diseño Modular
POTENCIA PARA
APLICACIONES EN JAVASCRIPT
¿QUÉ ES ESTO?
MÓDULO
SANDBOX
MÓDULO
SANDBOX
MÓDULO
SANDBOX
NUCLEO DE LA APLICACIÓN
jQuery Backbone RequireJS Mediator.js Otras... más
Así debería verse
tu aplicación web

Más contenido relacionado

Destacado

vesseltracker.com Vom Kaffeeklatsch zur Business Intelligence in der Schifffa...
vesseltracker.com Vom Kaffeeklatsch zur Business Intelligence in der Schifffa...vesseltracker.com Vom Kaffeeklatsch zur Business Intelligence in der Schifffa...
vesseltracker.com Vom Kaffeeklatsch zur Business Intelligence in der Schifffa...vesseltracker.com
 
Ingenier A Grupis 8
Ingenier A Grupis 8Ingenier A Grupis 8
Ingenier A Grupis 892082754514
 
nueva presentación
nueva presentaciónnueva presentación
nueva presentaciónmamenchu
 
Estudio del comprador online en nicaragua
Estudio del comprador online en nicaraguaEstudio del comprador online en nicaragua
Estudio del comprador online en nicaraguaJuan Ortega
 

Destacado (11)

Seo Workshop
Seo WorkshopSeo Workshop
Seo Workshop
 
vesseltracker.com Vom Kaffeeklatsch zur Business Intelligence in der Schifffa...
vesseltracker.com Vom Kaffeeklatsch zur Business Intelligence in der Schifffa...vesseltracker.com Vom Kaffeeklatsch zur Business Intelligence in der Schifffa...
vesseltracker.com Vom Kaffeeklatsch zur Business Intelligence in der Schifffa...
 
Mike Pritchett
Mike PritchettMike Pritchett
Mike Pritchett
 
Guns N Roses Patience (Live) (2)
Guns N  Roses   Patience (Live) (2)Guns N  Roses   Patience (Live) (2)
Guns N Roses Patience (Live) (2)
 
Ingenier A Grupis 8
Ingenier A Grupis 8Ingenier A Grupis 8
Ingenier A Grupis 8
 
Laboratori
LaboratoriLaboratori
Laboratori
 
Distinex 2550
Distinex 2550Distinex 2550
Distinex 2550
 
nueva presentación
nueva presentaciónnueva presentación
nueva presentación
 
Final Modulo1
Final Modulo1Final Modulo1
Final Modulo1
 
Estudio del comprador online en nicaragua
Estudio del comprador online en nicaraguaEstudio del comprador online en nicaragua
Estudio del comprador online en nicaragua
 
Panda
PandaPanda
Panda
 

Último

Qué es la Inteligencia artificial generativa
Qué es la Inteligencia artificial generativaQué es la Inteligencia artificial generativa
Qué es la Inteligencia artificial generativaDecaunlz
 
Sesión de aprendizaje Planifica Textos argumentativo.docx
Sesión de aprendizaje Planifica Textos argumentativo.docxSesión de aprendizaje Planifica Textos argumentativo.docx
Sesión de aprendizaje Planifica Textos argumentativo.docxMaritzaRetamozoVera
 
Curso = Metodos Tecnicas y Modelos de Enseñanza.pdf
Curso = Metodos Tecnicas y Modelos de Enseñanza.pdfCurso = Metodos Tecnicas y Modelos de Enseñanza.pdf
Curso = Metodos Tecnicas y Modelos de Enseñanza.pdfFrancisco158360
 
el CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyz
el CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyzel CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyz
el CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyzprofefilete
 
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptx
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptxTIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptx
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptxlclcarmen
 
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdf
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdfSELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdf
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdfAngélica Soledad Vega Ramírez
 
2024 - Expo Visibles - Visibilidad Lesbica.pdf
2024 - Expo Visibles - Visibilidad Lesbica.pdf2024 - Expo Visibles - Visibilidad Lesbica.pdf
2024 - Expo Visibles - Visibilidad Lesbica.pdfBaker Publishing Company
 
proyecto de mayo inicial 5 añitos aprender es bueno para tu niño
proyecto de mayo inicial 5 añitos aprender es bueno para tu niñoproyecto de mayo inicial 5 añitos aprender es bueno para tu niño
proyecto de mayo inicial 5 añitos aprender es bueno para tu niñotapirjackluis
 
Informatica Generalidades - Conceptos Básicos
Informatica Generalidades - Conceptos BásicosInformatica Generalidades - Conceptos Básicos
Informatica Generalidades - Conceptos BásicosCesarFernandez937857
 
la unidad de s sesion edussssssssssssssscacio fisca
la unidad de s sesion edussssssssssssssscacio fiscala unidad de s sesion edussssssssssssssscacio fisca
la unidad de s sesion edussssssssssssssscacio fiscaeliseo91
 
30-de-abril-plebiscito-1902_240420_104511.pdf
30-de-abril-plebiscito-1902_240420_104511.pdf30-de-abril-plebiscito-1902_240420_104511.pdf
30-de-abril-plebiscito-1902_240420_104511.pdfgimenanahuel
 
SEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptx
SEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptxSEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptx
SEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptxYadi Campos
 
ACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptx
ACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptxACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptx
ACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptxzulyvero07
 
EXPANSIÓN ECONÓMICA DE OCCIDENTE LEÓN.pptx
EXPANSIÓN ECONÓMICA DE OCCIDENTE LEÓN.pptxEXPANSIÓN ECONÓMICA DE OCCIDENTE LEÓN.pptx
EXPANSIÓN ECONÓMICA DE OCCIDENTE LEÓN.pptxPryhaSalam
 
FORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURA
FORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURAFORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURA
FORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURAEl Fortí
 
Caja de herramientas de inteligencia artificial para la academia y la investi...
Caja de herramientas de inteligencia artificial para la academia y la investi...Caja de herramientas de inteligencia artificial para la academia y la investi...
Caja de herramientas de inteligencia artificial para la academia y la investi...Lourdes Feria
 
RAIZ CUADRADA Y CUBICA PARA NIÑOS DE PRIMARIA
RAIZ CUADRADA Y CUBICA PARA NIÑOS DE PRIMARIARAIZ CUADRADA Y CUBICA PARA NIÑOS DE PRIMARIA
RAIZ CUADRADA Y CUBICA PARA NIÑOS DE PRIMARIACarlos Campaña Montenegro
 

Último (20)

Qué es la Inteligencia artificial generativa
Qué es la Inteligencia artificial generativaQué es la Inteligencia artificial generativa
Qué es la Inteligencia artificial generativa
 
Sesión de aprendizaje Planifica Textos argumentativo.docx
Sesión de aprendizaje Planifica Textos argumentativo.docxSesión de aprendizaje Planifica Textos argumentativo.docx
Sesión de aprendizaje Planifica Textos argumentativo.docx
 
Curso = Metodos Tecnicas y Modelos de Enseñanza.pdf
Curso = Metodos Tecnicas y Modelos de Enseñanza.pdfCurso = Metodos Tecnicas y Modelos de Enseñanza.pdf
Curso = Metodos Tecnicas y Modelos de Enseñanza.pdf
 
el CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyz
el CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyzel CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyz
el CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyz
 
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptx
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptxTIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptx
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptx
 
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdf
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdfSELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdf
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdf
 
2024 - Expo Visibles - Visibilidad Lesbica.pdf
2024 - Expo Visibles - Visibilidad Lesbica.pdf2024 - Expo Visibles - Visibilidad Lesbica.pdf
2024 - Expo Visibles - Visibilidad Lesbica.pdf
 
proyecto de mayo inicial 5 añitos aprender es bueno para tu niño
proyecto de mayo inicial 5 añitos aprender es bueno para tu niñoproyecto de mayo inicial 5 añitos aprender es bueno para tu niño
proyecto de mayo inicial 5 añitos aprender es bueno para tu niño
 
Informatica Generalidades - Conceptos Básicos
Informatica Generalidades - Conceptos BásicosInformatica Generalidades - Conceptos Básicos
Informatica Generalidades - Conceptos Básicos
 
la unidad de s sesion edussssssssssssssscacio fisca
la unidad de s sesion edussssssssssssssscacio fiscala unidad de s sesion edussssssssssssssscacio fisca
la unidad de s sesion edussssssssssssssscacio fisca
 
Fe contra todo pronóstico. La fe es confianza.
Fe contra todo pronóstico. La fe es confianza.Fe contra todo pronóstico. La fe es confianza.
Fe contra todo pronóstico. La fe es confianza.
 
Medición del Movimiento Online 2024.pptx
Medición del Movimiento Online 2024.pptxMedición del Movimiento Online 2024.pptx
Medición del Movimiento Online 2024.pptx
 
30-de-abril-plebiscito-1902_240420_104511.pdf
30-de-abril-plebiscito-1902_240420_104511.pdf30-de-abril-plebiscito-1902_240420_104511.pdf
30-de-abril-plebiscito-1902_240420_104511.pdf
 
SEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptx
SEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptxSEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptx
SEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptx
 
ACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptx
ACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptxACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptx
ACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptx
 
EXPANSIÓN ECONÓMICA DE OCCIDENTE LEÓN.pptx
EXPANSIÓN ECONÓMICA DE OCCIDENTE LEÓN.pptxEXPANSIÓN ECONÓMICA DE OCCIDENTE LEÓN.pptx
EXPANSIÓN ECONÓMICA DE OCCIDENTE LEÓN.pptx
 
FORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURA
FORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURAFORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURA
FORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURA
 
Caja de herramientas de inteligencia artificial para la academia y la investi...
Caja de herramientas de inteligencia artificial para la academia y la investi...Caja de herramientas de inteligencia artificial para la academia y la investi...
Caja de herramientas de inteligencia artificial para la academia y la investi...
 
RAIZ CUADRADA Y CUBICA PARA NIÑOS DE PRIMARIA
RAIZ CUADRADA Y CUBICA PARA NIÑOS DE PRIMARIARAIZ CUADRADA Y CUBICA PARA NIÑOS DE PRIMARIA
RAIZ CUADRADA Y CUBICA PARA NIÑOS DE PRIMARIA
 
Sesión de clase: Defendamos la verdad.pdf
Sesión de clase: Defendamos la verdad.pdfSesión de clase: Defendamos la verdad.pdf
Sesión de clase: Defendamos la verdad.pdf
 

Closures, el amigo incomprendido de Javascript