JavaScript closures can be kind of weird. The way a closure works within a loop is a fairly common "gotcha" because it doesn't work in the way that it intuitively feels like it should.
Take the following block of code:
for (var i = 0; i < 5; i++) {
var button = document.createElement("button");
button.innerHTML = "Button #" + (i + 1);
button.onclick = function() {
alert("You clicked on " + button.innerHTML + "!");
};
document.body.appendChild(button);
document.body.appendChild(document.createElement('br'));
}
What does that do? Read More to find out.