1
resposta

Dúvidas...

<meta charset="UTF-8">
<script>
    function mostra (frase){
        document.write(frase);
    }
    var loginCadastrado = "alura";
    var senhaCadastrada = "alura321";
    var chance = 1;
    alert("Você tem 3 tentativas!");

    while (chance <= 3){
    var loginInformado = prompt("Informe seu login");
    var senhaInformada = prompt("Informe sua senha");
    if ( loginCadastrado == loginInformado && senhaCadastrada == senhaInformada ) {
        alert("Acesso liberado!");
        brakeWhile();
        } 
        else {
        alert("Acesso negado!");
        chance++;
        if (chance > 3){
            mostra ("Tente novamente mais tarde!");
        }
    }
    }
//Ainda estou com duvidas sobre While dentro do If e vice-versa.
</script>
1 resposta

Olá Eduardo, beleza?

Referente a sua dúvida acredito que seja quanto a lógica, correto?

O que acontece é o seguinte, o "While" é uma estrutura de repetição que irá se repetir até que a determinada condição seja estabelecida. O comando "IF" é um "verificador" dentro da estrutura do seu código, no caso sempre que tiver um "IF" no seu código, será realizada uma verificação, retornando verdadeiro ou falso para a mesma.

No seu código..

Note que vc tem um While que tem por definição "3 tentativas de Login" (sua variável chance). Toda vez que você abrir o navegador vc terá que informar o seu usuário e senha.

    var loginInformado = prompt("Informe seu login");
    var senhaInformada = prompt("Informe sua senha");

armazenando nas variáveis "loginInformado " e "senhaInformada ", após inserido, teremos uma rotina de verificação através do "IF", onde:

/* Toda vez ele executará esse IF */
if ( loginCadastrado == loginInformado && senhaCadastrada == senhaInformada ) {
/* Caso o Login informado seja igual ao LoginCadastrado lá em cima ***E*** a senha também for igual a informada, então ele executará um alerta para vc, informando que o 'acesso foi liberado' e terminará o evento do while */
        alert("Acesso liberado!");
        brakeWhile();
        } 
        else {
    /* Senão (caso contrario do IF acima, ele irá executar esse trecho, onde alertará que o acesso foi negado e adicionará +1 a sua variavel "chance". */
        alert("Acesso negado!");
        chance++;
        if (chance > 3){
    /* Aqui é o ultimo caso, se vc errar 3 vezes a sua senha, significa que ele entrou 3 vezes no "else", nesse caso o valor de chance será = 3, executando sempre a sua função "mostra"

            mostra ("Tente novamente mais tarde!");
        }
    }

Note que ao errar 3 vezes a senha, vc terá a variável "chance" com valor maior que 3, o que causa o rompimento do seu While, encerrando a execução da sua função, até vc recarregar a página novamente.

Tentei ser o mais claro dentro do que achei que poderia ser sua dúvida, qualquer coisa comenta aqui!

Abraços