Skip to content

Instantly share code, notes, and snippets.

@xandkar
Created July 22, 2016 17:19
Show Gist options
  • Save xandkar/9a422ea5cf01408a9d67fa4800e53b25 to your computer and use it in GitHub Desktop.
Save xandkar/9a422ea5cf01408a9d67fa4800e53b25 to your computer and use it in GitHub Desktop.
#! /usr/bin/env node
var foo = function() {
for (i=0; i<=2; i++) {
console.log("foo i: %d", i)
}
}
var main = function() {
for (i=0; i<=2; i++) {
console.log("main i1: %d", i)
foo();
console.log("main i2: %d", i)
}
}
main()
#! /usr/bin/env node
"use strict"
var foo = function() {
for (i=0; i<=2; i++) {
console.log("foo i: %d", i)
}
}
var main = function() {
for (i=0; i<=2; i++) {
console.log("main i1: %d", i)
foo();
console.log("main i2: %d", i)
}
}
main()
#! /usr/bin/env node
"use strict"
var foo = function() {
var i = 0;
for (i; i<=2; i++) {
console.log("foo i: %d", i)
}
}
var main = function() {
var i = 0;
for (i; i<=2; i++) {
console.log("main i1: %d", i)
foo();
console.log("main i2: %d", i)
}
}
main()

Broken

$ ./loop_scope_broken.js
main i1: 0
foo i: 0
foo i: 1
foo i: 2
main i2: 3

Error

$ ./loop_scope_error.js
/Users/skhandkar/tmp/loop_scope_error.js:12
    for (i=0; i<=2; i++) {
          ^

ReferenceError: i is not defined
    at main (/Users/skhandkar/tmp/loop_scope_error.js:12:11)
    at Object.<anonymous> (/Users/skhandkar/tmp/loop_scope_error.js:19:1)
    at Module._compile (module.js:409:26)
    at Object.Module._extensions..js (module.js:416:10)
    at Module.load (module.js:343:32)
    at Function.Module._load (module.js:300:12)
    at Function.Module.runMain (module.js:441:10)
    at startup (node.js:139:18)
    at node.js:968:3

Fixed

$ ./loop_scope_fixed.js
main i1: 0
foo i: 0
foo i: 1
foo i: 2
main i2: 0
main i1: 1
foo i: 0
foo i: 1
foo i: 2
main i2: 1
main i1: 2
foo i: 0
foo i: 1
foo i: 2
main i2: 2
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment