1

Estaba aprendiendo closures leyendo esta guía http://jibbering.com/faq/notes/closures

lei lo siguiente:

A "closure" is an expression (typically a function) that can have free variables together with an environment that binds those variables (that "closes" the expression).

No se a que se refiere el termino variable libre, que quiere decir exactamente? No se si es en el contexto de libertad que usa la palabra free o es en el contexto de tener algo gratis.

¿Se refiere a que una función puede usar variables sin que tengan que ser globales pero tampoco tengan que estar declaradas en la función como tal si no que están encapsuladas en un contexto de ejecución?

1 Answers1

2

Un 'closure' es una función que es libre de 'variables', esto quiere decir que las 'variables' de la función padre funcionan, pero el 'closure' no tiene variables propias.

Puedes ver en el siguiente ejemplo el uso:

function padre() {
  var a = 1;
  function closure() {
    console.log(a);
  }
  closure();
}
padre();

La función padre() crea una variable local y una función closure(). Esta función interna es un closure y solo está disponible dentro de padre(). A diferencia de padre() esta función no tiene variables locales y usa las declaradas dentro de padre().

Dejo aquí un enlace a un al artículo de documentación de dónde se han obtenido los ejemplos y la información bien estructurada para está respuesta y que quizá pueda serte de ayuda: https://medium.com/@sergiodxa/definiendo-conceptos-closure-y-scope-en-javascript-9081f1e113e6

Pablo Lozano
  • 45,934
  • 7
  • 48
  • 87
JorgeGuz
  • 2,211
  • 2
  • 7
  • 24