No scope

by Jools Chadwick

JavaScript

var count = 10;
var funcs = [];

for(var i = 0; i<count; i++){
	if (true) {
  	var id = i;
    funcs[funcs.length] = function(){
    	var p = document.createElement("p")
      p.innerHTML = id;
      document.body.appendChild(p);
    }
  }
}

for(var i = 0; i<count; i++){
	funcs[i]();
}

funcs.length = 0;

for(var i = 0; i<count; i++){
	;(function(){ // function creates new scope with own "id" variable
  	var id = i;
    funcs[funcs.length] = function(){
    	var p = document.createElement("p")
      p.innerHTML = id;
      document.body.appendChild(p);
    }
  })();
}

for(var i = 0; i<count; i++){
	funcs[i]();
}