Dado o código abaixo na Linguagem JavaScript: ...
Dado o código abaixo na Linguagem JavaScript:
Assinale a alternativa que apresenta a sequência correta da saída do programa.
Comentários
Veja os comentários dos nossos alunos
Código:
const counter1 = outer();
counter1();
counter1();
const counter2 = outer();
counter2();
counter1();
Execução do Código
1. Criação de counter1:
A chamada outer() cria um novo escopo e inicializa count = 0 para counter1.
2. Chamadas de counter1:
Primeira chamada: Incrementa count para 1 e imprime 1.
Segunda chamada: Incrementa count para 2 e imprime 2.
3. Criação de counter2:
Outra chamada a outer() cria um novo escopo, com outro count inicializado como 0 para counter2.
4. Chamadas de counter2 e counter1:
Primeira chamada de counter2: Incrementa count no escopo de counter2 para 1 e imprime 1.
Chamada adicional de counter1: Retoma o escopo de counter1, onde count já era 2. Incrementa para 3 e imprime 3.
---
Sequência de Saída
O programa imprimirá:
1
2
1
3
---
Resumo
Cada chamada de outer() cria um novo escopo para a variável count.
counter1 e counter2 operam em escopos independentes.
A chamada final a counter1() retoma o escopo inicial de counter1, onde o valor de count já havia sido incrementado previamente.
o gabarito deveria ser 1213. A clousure do contador1 vai manter em memória o valor 2, ele vai ter um novo contador que resulta em 1 e quando for chamado o contador1 novamente, no passo final, o valor é 3, resultando em 1213.
Clique para visualizar este comentário
Visualize os comentários desta questão clicando no botão abaixo