Skip to content

Instantly share code, notes, and snippets.

@mucaho
Last active August 29, 2015 13:57
Show Gist options
  • Save mucaho/9716022 to your computer and use it in GitHub Desktop.
Save mucaho/9716022 to your computer and use it in GitHub Desktop.
JavaScript - Fix loop variable closure trap
// See http://stackoverflow.com/q/750486 for details
var callbacksIncorrectValue = [];
var callbacksCorrectValue = [];
var callbacksReference = [];
var array = ["A", "B", "C"];
for (var i = 0; i < array.length; ++i) {
var element = array[i];
callbacksReference.push(function() { return array[i] });
callbacksIncorrectValue.push(function() { return element });
var correctFunction = (function(element) {
return function() { return element; }
})(element);
callbacksCorrectValue.push(correctFunction);
}
for (var i = 0; i < callbacksReference.length; ++i) {
console.log("IncorrectValue: "+callbacksIncorrectValue[i]()+"\t"+
"CorrectValue: "+callbacksCorrectValue[i]()+"\t"+
"Reference: "+callbacksReference[i]());
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment