1
resposta

Tentativa de Login (Encurtado)

Para não inserir mais um bloco de condição, inseri um break.

Há como fazer isto com Try / Catch, e encutar mais ainda?

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

    var loginCadastrado = "alura";
    var senhaCadastrada = "alura321";



    var tentativa = 1;
    var maxTentativa = 3;

    while (tentativa <= maxTentativa) {

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

    if(loginCadastrado == loginInformado && senhaCadastrada == senhaInformada) {

        alert("Bem-vindo ao sistema " + loginInformado);

        tentativa == maxTentativa;

        break;

    } else {

        alert("Login inválido. Tente novamente");
        tentativa += 1;
    } }
</script>
1 resposta

O que pode ser feito é separar a lógica que verifica se as credenciais são válidas em uma função só pra isso. Seria algo como:


function verificarCredenciais(loginInformado, senhaInformada) {

    // Pode-se remover a delcaração dessas variáveis fora 
    // dessa função.
    var loginCadastrado = "alura";
    var senhaCadastrada = "alura321";

    if (!loginInformado == loginCadastrado || !senhaInformada == senhaCadastrada) {
        throw new Error('Login inválido. Tente novamente');
    }

    return;
}

// O seu while ficaria algo como isso, nesse caso...
while (tentativa <= maxTentativa) {

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

    try {
        verificarCredenciais(loginInformado, senhaInformada);
        alert("Bem-vindo ao sistema " + loginInformado);

        tentativa == maxTentativa;

        break;

    } catch(erro) {
        alert("Login inválido. Tente novamente");
        tentativa += 1;
    }

}

Estou com pouco tempo no momento, então não tenho como testes e afirmar com 100% de certeza que esse código funcionaria, mas a ideia geral é mais ou menos isso.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software