¿Son independientes los contadores?
importancia: 5
Aquí hacemos dos contadores: counter
y counter2
usando la misma función makeCounter
.
¿Son independientes? ¿Qué va a mostrar el segundo contador? 0,1
o 2,3
o algo más?
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
(
)
)
;
// ?
La respuesta: 0,1.
Las funciones counter
ycounter2
son creadas por diferentes invocaciones de makeCounter
.
Por lo tanto, tienen entornos léxicos externos independientes, cada uno tiene su propio count
.