I\'m wondering why this code doesn\'t work,
var uniqueInteger = function() {
var counter = 0;
return function() { return counter++; }
};
console.log(uni
The second code created a closure with var counter = 0
only once since when defining uniqueInteger, it called a function that returned a function where initialization is done. The first code creates var counter = 0
every time you call it.
Note that with the first code you can do:
ui = uniqueInteger();
console.log(ui()); // 0
console.log(ui()); // 1
ui2 = uniqueInteger();
console.log(ui()); // 2
console.log(ui2()); // 0
console.log(ui()); // 3
console.log(ui2()); // 1