Skip welcome & menu and move to editor
Welcome to JS Bin
Load cached copy from
 
<!DOCTYPE html>
<html>
<head>
<script src="https://cdnjs.cloudflare.com/ajax/libs/q.js/1.0.1/q.js"></script>
  <meta charset="utf-8">
  <title>Closure: scoping challenges</title>
</head>
<body>
</body>
</html>
 
function arrayOfFunctionsBroken() {
  
  var arr = [];
  
  for (var i = 0; i < 3; i++ ) {
    arr.push(
      function() {
        console.log(i);
      }
    );
  }
  
  return arr;
  
}
var afBroken = arrayOfFunctionsBroken();
console.log("arrayOfFunctionsBroken & afBroken");
afBroken[0]();
afBroken[1]();
afBroken[2]();
function arrayOfFunctions() {
  
  var arr = [];
  
  for (var i = 0; i < 3; i++ ) {
    let j = i;  // ES6 scoped variable
    arr.push(
      function() {
        console.log(j);
      }
    );
  }
  
  return arr;
  
}
var af = arrayOfFunctions();
console.log("\narrayOfFunctions & af");
af[0]();
af[1]();
af[2]();
Output

You can jump to the latest bin by adding /latest to your URL

Dismiss x
public
Bin info
metaseanpro
0viewers