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

Diferença entre = e ==

Olá, eu resolvi o exercício (depois de ver a resposta) e até entendi. Porém estou em dúvida quanto ao meu erro da primeira vez. Eu usei o "==" ao invés do "=" na minha forma de pensar daria no mesmo porque o "tentativas" viraria o "tentativaFinal" que possui valor 3 e finalizaria o looping porém nesse caso a "tentativas" precisa receber o valor de "tentativaFinal" para fechar o looping. Teria como alguma alma caridosa me explicar porque o meu primeiro programa não funcionou por conta disso?

<script>

    var login = "alura";
    var senha = "alura321";

    var tentativas = 1;
    var tentativaFinal =3;

    while (tentativas<=tentativaFinal){
       var tentarLogin = prompt("Informe seu login:");
       var tentarSenha = prompt("Informe sua senha");

       if (tentarLogin==login && tentarSenha==senha){
          alert("Seja bem Vindo "+ login);
          tentativas==tentativaFinal;
       }
       else {
        alert("Tente novamente");
       }
    tentativas = tentativas +1;

    } 

</script>
2 respostas
solução!

Boa noite!!

O operador = atribui valor a uma variável mesmo se estiver dentro dos parâmetros de um laço ou if.

Já o operador == compara dois valores e se forem iguais retorna true e se diferentes retorna false. Esses sim tem que ser usados dentro do argumento if e dos argumentos comparativos dos laços.

Espero ter ajudado!!!

Oi Jose como o colega acima já falou = é diferente de ==, na sintaxe da linguagem o = é um operador de atribuição, onde você atribui o valor a variável a esquerda, já o == compara os valores nos lados geralmente é usado em estrutura de decisão e repetição. No seu código caso o usuário acerte o login e a senha mesmo que seja na primeira tentativa ele vai continuar pedindo login e senha logo após a senha de sucesso pq nessa linha:

tentativas==tentativaFinal;

o valor é false e ele não está sendo usado em nenhum if e nem o seu valor tá sendo armazenado em nenhuma variável tá somente como um código solto na sua lógica.Para igualar os valores de modo a atingir a condição do while e interromper a leitura de dados seria necessário que o valor das tentativas fosse maior que a tentativaFinal que é 3, ou seja teria que ser 4, então para lógica funcionar bastaria fazer:

tentativas==4;

Ou você poderia utilizar uma solução mais elegante que desconsidera o máximo de tentativas com o comando break:

if (tentarLogin==login && tentarSenha==senha){
          alert("Seja bem Vindo "+ login);
          break;
       }

Assim caso o usuário logue em qualquer tentativa eu encerro a leitura dos dados.

Espero ter ajudado e bons estudos.