Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Declarar variáveis em estruturas de repetição

Olá.

Amigos, não entendo como que o console não dá nenhuma crítica no código abaixo, no que tange ao bloco do While:

var totalGastoComEventos = 0;

   while(contador <= totalDeEventos) {

        var gasto = parseFloat(prompt("Informe total gasto com evento"));
        totalGastoComEventos = totalGastoComEventos + gasto;
        contador++;
    }

É correto declarar uma variável dentro de uma estrutura de repetição? Como por exemplo a variável gasto. Vejam bem, o While não serve para repetir tarefas? Então vou estar declarando a mesma variável quantas vezes forem solicitadas a repetição? Por exemplo, se a repetição ocorrer 100 vezes, vou estar declarando a mesma variável 100 vezes? O código executa conforme o esperado, mas a questão é: isso está certo? Não seria melhor declarar antes do While?

Talvez eu ainda não tenha entendido como funciona a declaração de variáveis no Javascript.

3 respostas

Oi, Bruno. Tudo bem?

Nesse caso o ideal é que a variável fique dentro do while por dois motivos:

  1. Embora a variável esteja sendo declarada a cada execução do laço, a performance do seu programa não será afetada.

  2. O outro motivo é o escopo, o ideal é apenas declarar variáveis dentro de onde ela será utilizada. Nesse caso, declarar fora do while sendo que ela só será utilizada dentro dele pode não ser o ideal, já que ela ficará disponível para ser acessada pelo resto do código sem nenhuma necessidade.

Espero ter ajudado. Qualquer dúvida é só avisar!

Bons estudos!

Ok. obrigado.

1) A variável totalGastoComEventos deveria ter sido declarada dentro do While então? (sem inicializar, claro)

Fiz o seguinte teste:

<html>
<body>

<script type="text/javascript">
var num = 2;
var num = 3;

document.write(num);  // o resultado é 3

</script>

</body>
</html>

2) Ou seja, declarei a variável duas vezes e não houve mensagem de conflito por já ter uma variável declarada com o mesmo nome. Qual a explicação para isso?

solução!

Oi Bruno, tudo bem?

A variável totalGastoComEventos será usada fora do escopo do while, portanto o ideal é declarar fora mesmo.

Por conta do objetivo do curso ser apenas introduzir aos conceitos mais básicos de lógica de programação, foi utilizado o var para declarar as variáveis, mas o ideal é usar let ou const no lugar dele. Quando você avançar mais no curso de JavaScript, vai ficar mais claro o porquê do uso do var não ser recomendado, por enquanto, é bom ficar ciente de que o escopo do var difere do que você está acostumado em outras linguagens. Se você fizer o teste e tentar usar o vas gasto fora do while, ele ainda assim funciona, quando o ideal é que fosse apresentado um erro. O mesmo com a redeclaração do seu var num, você declarar ele duas vezes:

var num = 2;
var num = 3;

Para o interpretador do JavaScript, seria o mesmo que escrever o código abaixo:

var num;
num = 2;
num = 3;

Isso já apresentaria um erro de sintaxe caso fosse utilizado o let - pelo menos usando o Firefox - devido às peculiaridades da engine do navegador, o Chrome, por exemplo, permite esse tipo de manipulação de variável sem apresentar nenhum erro.

Se ficou alguma dúvida, avisa aí! Mas todos esses detalhes sobre a linguagem e formas corretas de lidar com variáveis serão abordados nos cursos mais avançados de JavaScript. Bons estudos!!