JS 002: Block Binding in Loops
by Nico D
JavaScript
var version = 1;
var exampleNumber = 1;
const log = function(message) {
if (version < exampleNumber) {
version = exampleNumber;
document.write("<br/>");
}
const title = 'EXAMPLE ' + exampleNumber + ': ';
document.write(title + message + "<br/>");
};
//////////////////////
exampleNumber = 1;
for (var i = 0; i < 4; i++) {
log(i);
}
log(i);
//////////////////////
exampleNumber = 2;
try {
for (let i2 = 0; i2 < 4; i2++) {
log(i2);
}
log(i2);
} catch (e) {
log("ERROR => " + e.message);
}
//////////////////////
exampleNumber = 3;
var funcs = [];
for (var i3 = 0; i3 < 4; i3++) {
funcs.push(function() {
log(i3);
});
}
funcs.forEach(function(func) {
func();
});
//////////////////////
exampleNumber = 4;
var funcs = [];
for (var i4 = 0; i4 < 4; i4++) {
funcs.push((function(value) {
return function() {
log(value);
}
}(i4)));
}
funcs.forEach(function(func) {
func();
});
//////////////////////
exampleNumber = 5;
var funcs = [];
for (let i5 = 0; i5 < 4; i5++) {
funcs.push(function() {
log(i5);
});
}
funcs.forEach(function(func) {
func();
})