Чи лічильники незалежні?
важливість: 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
.