1
resposta

Simulando uma tela de login

Alguém poderia me dizer uma forma para que eu conseguisse acessar as variáveis dentro da função criada?

Pois eu recebo o seguinte erro:

Uncaught TypeError: loginInformado is not a function at solicitarSenha (pagina_login.html:6:16) at pagina_login.html:25:13 solicitarSenha @ pagina_login.html:6 (anonymous) @ pagina_login.html:25


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

    function solicitarSenha() {

        return loginInformado();
        return senhaInformada();
    }

    var loginCadastrado = "alura";
    var senhaCadastrada = "alura321";
    var tentativas = 3;
    var errou = 1;
    var loginInformado = prompt("Informe seu login");
    var senhaInformada = prompt("Informe sua senha");

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

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

            while (errou <= tentativas) {

            alert("Login inválido. Tente novamente. Você tem mais " + tentativas + " tentativas.");
            solicitarSenha();
            tentativas = tentativas -1;
    }
    }
</script>
1 resposta

Oi Marcelo

Vi que você inseriu 2 return dentro da função, além de chamar uma variável como função utilizando os parênteses.

Quando você utiliza o return ele automaticamente já sai da função carregando ou não alguma informação com ele, então o primeiro detalhe é que somente o primeiro return será executado o segundo não será executado.

function solicitarSenha() {

        return loginInformado();
        // Qualquer código depois do return dentro de uma função não será executado.
        return senhaInformada(); 
    }

Outro detalhe é sobre essa parte em que você chama uma variável como função utilizando os parênteses return loginInformado(); e irá retornar realmente o erro que você tomou, já que não existe uma função chamada loginInformado();

Para que a função solicitarSenha funcione da forma esperada você precisa chamar o prompt dentro dela. Algo assim:

function solicitarSenha() {
    return prompt('Informe sua senha');
  }

  // e em algum momento que desejar chama-la e atribuir o valor a uma variável
  var senhaInformada = solicitarSenha();

  // você pode criar a função solicitarLogin também
  // é importante seguir uma boa prática de que o nome da função expresse o que está acontecendo dentro dela
  function solicitarLogin() {
    return prompt('Informe seu login');
  }

  var loginInformado = solicitarLogin();

Tente alterar seu código com base nas informações e poste aqui novamente se estiver com dúvidas.

Parabéns pelo empenho nos estudos!

Continue praticando e qualquer dúvida pode contar com a gente.