2
respostas

Array

Aqui nao entendi bem o pq do uso do true e false, precisou declarar uma variavel ( var achou = false) e depois (var achou = true)... nao seria possivel usar o else quando errar?

<meta charset="utf-8">


<input/>
<button>Compare com o meu segredo</button>

<script>

    var segredos = [5,7,10,2,3];
var input = document.querySelector("input");
input.focus();
function verifica() {
    var achou = false;
    for(var posicao = 0; posicao < segredos.length; posicao++ ) {

        if(input.value == segredo[posicao]) {

                alert("Você ACERTOU!");
                achou == true;
                break;
        }    
    }

    if(input.value == false)  {

        alert("Você ERROU!");
    } 

    input.value = "";
    input.focus();
}
    var button = document.querySelector("button");
    button.onclick = verifica;


</script>
2 respostas

Opa, blz?

Nesse caso não, pois, como ele está varrendo o array em busca do valor correspondente, se tu usar o ELSE, vais ver que vai dar N alertas na sua tela, entende? Então, ele percorre todas as posições do array, se achar, da 1 alerta e para atribuindo a variável achou como TRUE.

Se não achou, ele da apenas 1 mensagem de Erro e segue o fluxo.

Johnathan,

no exemplo do professor a variável 'achou' não está num tipo de estrutura 'if{}else{}'.

A primeira comparação 'if' é feita com o valor de 'input.value', e a segunda comparação 'if' é feita com a variável 'achou'.

Só dá pra usar 'if{}else{}' se compara uma coisa e tem duas possibilidades. No caso eram duas comparações.

E seu código tem alguns problemas:

  • falta o 's' na variável 'segredos':
    if(input.value == segredo[posicao]) {
  • aqui a operação não é de comparação
    achou == true;
    mas sim de atribuição de valor:
    achou = true;
  • e a variável a ser utilizada aqui não é 'input.value':
    if(input.value == false)  {
    mas sim a 'achou':
    if(achou == false)  {

Abaixo o código com as correções:

<meta charset="utf-8">


<input/>
<button>Compare com o meu segredo</button>

<script>

    var segredos = [5,7,10,2,3];
    var input = document.querySelector("input");
    input.focus();
    function verifica() {
        var achou = false;
        for(var posicao = 0; posicao < segredos.length; posicao++ ) {

            if(input.value == segredos[posicao]) {

                alert("Você ACERTOU!");
                achou = true;
                break;
            }    
        }

        if(achou == false)  {

            alert("Você ERROU!");
        } 

        input.value = "";
        input.focus();
    }
    var button = document.querySelector("button");
    button.onclick = verifica;

</script>