Si usted comienza con un uso simple, que obtuve de http://ejohn.org/apps/learn/#49
var num = 10;
function addNum(myNum){
return num + myNum;
}
assert(addNum(5) == 15, "Add two numbers together, one from a closure.");
Lo que ocurre es que la variable num
es atrapado (adjunta) dentro de la función addNum
.
Cuando esto se convierte en la mano es si tiene algo (esto no se espera que funcione correctamente) como esto:
for(var t = 0; t < 5; t++) {
var elem = document.getElementById('mydiv' + t);
elem.onclick = function(e) {
alert(t);
};
};
Esto debería mostrar el valor 5 por cada div que fue ajustada con este controlador de eventos.
Si encierra esa instancia del contador dentro de su controlador de eventos, puede ser diferente para cada uno, que es el comportamiento esperado.
Este es un tema bastante avanzado. Una vez que te sientas más cómodo con javascript, es posible que quieras ver cómo lo aprendes en ese punto.
Ver http://stackoverflow.com/questions/111102/how-do-javascript- closures-work –
[Aquí hay una publicación fácil de entender para cierres con código de trabajo] (http://conceptf1.blogspot.com/2013/11/javascript-closures.html) –