Skip to content Skip to sidebar Skip to footer

Making Counter Using Closure And Self-invoking Function

I'm wondering why this code doesn't work, var uniqueInteger = function() { var counter = 0; return function() { return counter++; } }; console.log(uniqueInteger()()); //

Solution 1:

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

Post a Comment for "Making Counter Using Closure And Self-invoking Function"