Независимы ли счётчики?
важность: 5
Здесь мы делаем два счётчика: counter
и counter2
, используя одну и ту же функцию makeCounter
.
Они независимы? Что покажет второй счётчик? 0,1
или 2,3
или что-то ещё?
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
(
)
)
;
// ?
Ответ: 0,1.
Функции counter
и counter2
созданы разными вызовами makeCounter
.
Так что у них независимые внешние лексические окружения, у каждого из которых свой собственный count
.