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

Uma dúvida simples sobre posição de variável

Olá amigos! Sobre a aula de operadores ternários, me deparei com uma dúvida. Se eu colocar o: "let palavraTentativas = tentativas > 1 ? 'tentativas' : 'tentativa'; " acima do while, dá erro. Só funciona quando coloco abaixo do while, como foi feito na aula. Mas não consigo fazer sentido do porquê, alguém explica?

6 respostas

Você poderia colocar o código que dá erro? acho que assim consigo te ajudar.

Opa Diogo! O código é esse:

let chute; 
let numeroSecreto = 7;
let tentativas = 1;
//se eu colocar aqui, dá erro

while (chute != numeroSecreto) {   
    chute = prompt('Digite um número de 1 a 10.');
    if (chute == numeroSecreto) { 
        break;

    } else {
    if (chute > numeroSecreto) {
            alert(`O número secreto é menor que ${chute}.`);
        } else {
            alert(`O número secreto é maior que ${chute}.`);
        }
        tentativas++;
    }
}
    let palavraTentativas = tentativas > 1 ? 'tentativas' : 'tentativa';   // aqui fica correto

        alert(`Acertou, mizeravi. O número secreto é ${numeroSecreto}. Você fez ${tentativas} ${palavraTentativas}.`);

Creio que seja por causa do usa da variavel tentativa dentro do while. Se voce coloca acima do while, voce acabava deixando o alert definido e logo em seguida chama algo que ja está definido para dentro de um loop.

solução!

Aaah entendii mano, vamos lá kkkkk acontence que o nosso código funciona de cima para baixo, certo? Tendo isso em mente se você já criar a variável "palavraTentativas " antes do while, concorda comigo que a variável "palavraTentativas " SEMPRE vai ter o valor de 1. Pensa comigo, se o valor de "palavraTentativas " não mudar nenhuma outra vez depois do while, você vai sempre ter como resposta "tentativa", para você perceber isso, faz o seguinte, roda esse código que vai ficar claro (abre ele no console do navegador para vc ver o console.log):

let chute; 
let numeroSecreto = 7;
let tentativas = 1;
let palavraTentativas = tentativas > 1 ? 'tentativas' : 'tentativa';   // Essa variavel vai pegar o valor de "tentativas", que é igual a 1

while (chute != numeroSecreto) {   
    chute = prompt('Digite um número de 1 a 10.');
    if (chute == numeroSecreto) { 
    console.log(palavraTentativas);
        break;

    } else {
    if (chute > numeroSecreto) {
            alert(`O número secreto é menor que ${chute}.`);
            console.log(palavraTentativas);
        } else {
            alert(`O número secreto é maior que ${chute}.`);
            console.log(palavraTentativas);
        }
        tentativas++;
    }
}

        alert(`Acertou, mizeravi. O número secreto é ${numeroSecreto}. Você fez ${tentativas} ${palavraTentativas}.`);

Espero que tenha entendido, qualquer coisa me chama!

O Javascritpr lê o código linha por linha de cima pra baixo, então damos as coordenadas na medida que elas devam acontecer.. A etapa verificar tentativas vem depois do Wile, logo, a sequencia da palavraTentativas com o teste das tentativas tem que vir depois do Wile.

Entendi turma, realmente faz todo sentido agora kkkk abraço e valeu a todos!