1
resposta

Porque usou const contagemRegressiva e não uma function() ?

Olá,

Eu fiz o codigo com a function declarada como function, e nao dentro de uma constante com () => {} como na aula.

No meu código, assim como de alguns alunos, a função não voltava o valor de tempoDecorrido para 5 automaticamente, chamando o alert repetidamente, depois de zerado. Ou seja, não zerava/resetava o tempo decorrido, apenas o contador (intervaloId).

A minha dúvida é a mesma do Getulio e do Marcus Vinicius "porque o professor escolheu fazer a função dentro de uma constante e nao declarar a função diretamente" ?

Como há diferença de escopo, explicado pelo Leonardo, () => {} não tem Hoisting. Ou seja no caso de declarar a função dentro da constante teria comportamento restrito aquele momento, é isso? Isso interfere no resetar da variavel "tempoDecorrido"? Dentro da constante ela sempre inicia com os valores brutos iniciais declarados no arquivo ao invés dos valores lógicos já modificados? Faz diferença na prática usar function ou delcarar dentro da constante? quando podemos usar () => {} propositadamente ao invés de function?

Obrigado.

1 resposta

Olá Vitor!

Uma das principais diferenças entre function e const com () => {} é que funções declaradas com function são "elevadas" ao topo do escopo durante a fase de compilação. Isso significa que você pode chamar a função antes mesmo de declará-la no código.

Já as funções declaradas com const e () => {} Não são elevadas e você só pode usá-las após a linha onde são definidas.

Avançando um pouco na linguagem, vamos falar na diferença de escopo, funções declaradas com function têm seu próprio contexto de this, que pode mudar dependendo de como a função é chamada.

Funções declaradas com const e () => {} não têm seu próprio this; elas herdam o this do escopo onde foram definidas.

Por que usar const com () => {}?

No contexto do projeto, o uso de const com () => {} pode trazer algumas vantagens:

Como cintado anteriormente se você precisa que a função mantenha o contexto de this do escopo onde foi definida, as arrow functions são ideais.

Para funções curtas e simples, as arrow functions podem tornar o código mais conciso e legível.

A forma como a função é declarada (function ou () => {}) não interfere diretamente no reset da variável tempoDecorrido. O que importa é onde e como você está manipulando essa variável. No seu caso, o problema pode estar relacionado à lógica de reset dentro da função contagemRegressiva ou à forma como o temporizador é controlado.

Ambas as formas têm seus usos e vantagens. A escolha entre uma função declarada com function e uma função dentro de uma constante com () => {} depende do contexto e das necessidades específicas do código. No projeto, o professor pode ter escolhido const com () => {} por questões de escopo e legibilidade.

Mas de toda forma compreendo que essa distinção possa parecer complexa, dificultando a compreensão das diferenças entre elas. Por isso, recomendo a leitura do seguinte artigo e da documentação sobre funções, que se aprofunda bastante no assunto, e vai lhe ajudar a fixar o conhecimento.

Espero ter ajudado e reforço que em casos de dúvidas, conte sempre com o fórum da comunidade Alura! Bons estudos!

Sucesso

Um grande abraço e até mais!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!