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

Tentei fazer com o && e não consegui

Pensando no código ficar mais limpo, tentei usar o && do seguinte modo:

<meta charset="UTF-8">
<script>

    function pulaLinha() {
        document.write("<br><br>");
    }

    function mostra(frase) {
        document.write(frase);
        pulaLinha();
    }

    var contador = 30;

    while (contador <= 40) {
        if (contador == 33 && contador == 37) {
            contador = contador + 1;
        } else {
            mostra(contador);
            contador = contador + 1
            }

    }

mostra("FIM");

</script>

Poderia me ajudar a entender o que aconteceu? Eu gostaria que ele exibisse até mesmo um X aonde seria o número 33 e 37, mas não consegui e desisti da ideia.

4 respostas

Olá, Vinícius! O problema está em usar o operador lógico &&.

Da forma que foi implementado, o código dentro do if será executado somente quando as duas condições forem verdadeiras.

Então, só entrará no if se a variável contador for igual a 33 e a 37, o que, de fato, é impossível. Ela será igual a 33 OU 37, logo, deve-se usar o operador ||.

Assim, o código pode ser escrito da seguinte forma:

<meta charset="UTF-8">
<script>

    function pulaLinha() {
        document.write("<br><br>");
    }

    function mostra(frase) {
        document.write(frase);
        pulaLinha();
    }

    var contador = 30;

    while (contador <= 40) {
        if (contador == 33 || contador == 37) {
            contador = contador + 1;
            mostra("X");
        } else {
            mostra(contador);
            contador = contador + 1;
        }

    }

    mostra("FIM");

</script>

Observa-se que estou escrevendo "X" na tela, como você tentou, amigo.

Caso você faça questão de usar o operador &&, você pode substituir o loop do while por:

while (contador <= 40) {
        if (contador != 33 && contador != 37) {
            mostra(contador)
            contador = contador + 1;
        } else {
            mostra("X");
            contador = contador + 1;
        }

    }
solução!

Boa noite. Tudo bem. Segue a documentação oficial Javascript, explica sobre os operadores lógicos:

Operadores lógicos

OperadorUtilizaçãoDescrição
AND lógico (&&)expr1 && expr2(E lógico) - Retorna expr1 caso possa ser convertido para falso; senão, retorna expr2. Assim, quando utilizado com valores booleanos, && retorna verdadeiro caso ambos operandos sejam verdadeiros; caso contrário, retorna falso.
OU lógico (||)expr1 || expr2(OU lógico) - Retorna expr1 caso possa ser convertido para verdadeiro; senão, retorna expr2. Assim, quando utilizado com valores booleanos,
NOT lógico (!)!expr(Negação lógica) Retorna falso caso o único operando possa ser convertido para verdadeiro; senão, retorna verdadeiro.

Muito obrigado pela explicação.

É isso ai pessoal, belas explicações ;)