Diferencias

Muestra las diferencias entre dos versiones de la página.

Enlace a la vista de comparación

unidades:01_introduccion:04_repasojs [2014/09/07 17:27]
admin [Funciones]
unidades:01_introduccion:04_repasojs [2014/09/07 17:38] (actual)
admin [Closure]
Línea 135: Línea 135:
 } }
  
-var c=getFunction()(1,​2);​+var sumaClosure=getFunction()
 + 
 +var c=sumaClosure(1,2);
  
 </​sxh>​ </​sxh>​
  
-Al ejecutar el ejemplo , la variable ''​c''​ vale 103. +Al ejecutar el ejemplo , la variable ''​c''​ vale 103. Igual no te parece raro pero cuando se está ejecutando la función ''​sumaClosure'',​ya no debería existir la variable ''​extra''​ pero si que existe y la función ''​sumaClosure''​ aun puede usar su valor aun cuando ya no estamos dentro de ''​getFunction''​. Es es realmente una closure. Una función que se ejecuta en el contexto de donde se creo no donde está ahora. Puede parecer que esto es poco útil, pero con tanta llamada asíncrona en JavaScript es realmente útil.
  
 +El ejemplo lo podemos liar un poco mas añadiendo nuevas variables llamadas ''​extra''​ y veremos como no afecta al resultado, éste sigue siendo 103:
 +
 +<sxh js;​highlight:​[1,​14,​18]>​
 +var extra=1000;
 +
 +function getFunction() {
 +
 +  var extra=100;
 +
 +  var sumar=function (a,b) {
 +    return a+b+extra;
 +  }
 +
 +  return sumar;
 +}
 +
 +extra=1100;
 +
 +var fn=getFunction();​
 +
 +extra=1200;
 +
 +var c=fn(1,2);
 +</​sxh>​
  
unidades/01_introduccion/04_repasojs.1410103676.txt.gz · Última modificación: 2014/09/07 17:27 por admin
Ir hasta arriba
CC Attribution-Share Alike 3.0 Unported
chimeric.de = chi`s home Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0