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

If usado sem { }

Com relação ao código abaixo, gostaria de entender como ele funcionou sem usar { } no if, pois os códigos com if que vi até agora no curso sempre vem com { }. Então, eu estava tentando solucionar dessa forma e o código não funcionava, até que vi que um aluno postou o código do if sem { } e funcionou... Obrigada!

<meta charset="UTF-8">

<script>

    // funções ocultas

    var contador = 30;

    while (contador <= 40) {

        if (contador != 33 && contador != 37)

        mostra (contador);
        contador = contador + 1;
    }

    mostra("FIM.");

</script>
2 respostas
solução!

Quando você utiliza chaves ({}), você delimita onde sua função if vai atuar. Exemplo:

let valor = 1
if (valor > 1) { // false
    console.log("Dentro do if") // não é executado
    console.log(valor) // não é executado
}
console.log("Fora do if")

Ao executar este exemplo temos a saída:

"Fora do if"

Ou seja, a condição sendo falsa executou o que estava fora das chaves ({}). Agora, ao executar o mesmo exemplo sem as chaves ({}):

valor = 1
if (valor > 1)  // false
    console.log("Dentro do if") // não é executado
console.log(valor)
console.log("Fora do if")

A saída é:

1
"Fora do if"

Quando não se utiliza chaves para delimitar o código, a função executa a linha de baixo do if (valor > 1), e como a condição é falsa, "Dentro do if" não é exibido.

Execute o código acima trocando ">" por ">=" e veja que todos os console.log() são exibidos.

No seu exemplo, apenas quando contador é diferente de 33 e 37 que a função mostra() é executada

if (contador != 33 && contador != 37)

        mostra (contador); // executado apenas se if é verdadeiro
        contador = contador + 1;

Isso também funciona para outras funções como else e for por exemplo.

Olá, Maisa! Tudo bem contigo?

A explicação do Guilherme está perfeita e só vou reforçar :-)

Quando não utilizamos as chaves {} o iffica sem o seu "bloco" de avaliação e qualquer condicional não fica precisa.

Vamos supor que vou fazer um comparativo de valor

  var valor = 2;


  if (valor > 1)

  document.write("Maior que 1")
  document.write("Igual a 1")
  document.write("Menor que 1")

Nessa situação todos os resultados são impressos porque, sendo verdade, ele pega o primeiro e imprime, porém os demais acaba vindo junto.

Se coloco var valor = 0; ele vai ignorar o primeiro e imprimirá os dois restantes.

Resumindo, quando for verdade ele imprime o primeiro e trás o restante!

As chaves são essenciais no bloco do if como também no for ou while. Além de uma organização no seu código, fará com que você limite a execução dentro de um determinado bloco!

Espero ter contribuído, Maysa!

Um abraço e bons estudos!