Are counters independent?
importance: 5
Here we make two counters: counter
and counter2
using the same makeCounter
function.
Are they independent? What is the second counter going to show? 0,1
or 2,3
or something else?
function
makeCounter
(
)
{
let
count =
0
;
return
function
(
)
{
return
count++
;
}
;
}
let
counter =
makeCounter
(
)
;
let
counter2 =
makeCounter
(
)
;
alert
(
counter
(
)
)
;
// 0
alert
(
counter
(
)
)
;
// 1
alert
(
counter2
(
)
)
;
// ?
alert
(
counter2
(
)
)
;
// ?
The answer: 0,1.
Functions counter
and counter2
are created by different invocations of makeCounter
.
So they have independent outer Lexical Environments, each one has its own count
.