3
respostas

If dentro do if

<meta charset="UTF-8">

<script>
    function pulaLinha() {
        document.write("<br>");
    }

    function mostra(frase) {
        document.write(frase);
        pulaLinha();
    }

    var idade = parseInt(prompt("Qual é sua idade"));
    var temCarteira = prompt("Tem carteira? Responda com S ou N");

    if(idade >= 18 && temCarteira == "S"){
        mostra("Você pode dirigir.")

    if(idade >= 18 && temCarteira == "N"){
        mostra("Você não tem carteira")
        }
    }else{
        mostra("Você não tem idade para dirigir e obter uma carteira")
    }
</script>

Porque quando colocado o if fora do outro na resposta ele mostra tanto a frase "Você pode dirigir" quanto "Você não tem idade para dirigir e obter uma carteira". Do jeito que o código está agora, com um if dentro do outro, ele consegue distinguir e mostrar apenas uma frase, sendo ela correta.

3 respostas

A sua confusão é em relação as chaves, para ter o efeito correto deveria estar assim:

if (idade >= 18 && temCarteira == "S") {
    mostra("Você pode dirigir.")
}else if (idade >= 18 && temCarteira == "N") {
    mostra("Você não tem carteira")
}else{
        mostra("Você não tem idade para dirigir e obter uma carteira")
}

Assim, fica mostrando a primeira msg se for igual ou maior de 18 e tiver carteira, a segunda msg se for igual ou maior de 18 e não tiver carteira, e a terceira msg se todos anteriores foi falso, ou seja, se é menor de 18, ou se é igual ou maior de 18 mas temCarteira não é nem S nem N, ou ambos.

Isso é um condicional encadeado, e seria a aplicação lógica mais sensata para este caso, ao invés de escrever ifs separados que não estejam encadeados um com o outro.

Olá Daniel,

Acredito que essa não seria a melhor opção, pois se o usuário digitar que tem 20 anos e não tem carteira, vai apresentar que ele não tem idade para dirigir e obter uma carteira, quando na verdade deveria aparecer que ele não tem carteira, se você utilizar o else para separar as opções creio que ficaria melhor, segue um exemplo que fiz logo abaixo:

if(idade >= 18 && temCarteira == "S"){
    mostra("Você pode dirigir.")
}
else{
    if(idade >= 18 && temCarteira == "N"){
        mostra("Você não tem carteira");
        }
    else{
            mostra("Você não tem idade para dirigir e obter uma carteira");
    }
}

Espero ter ajudado

Faça a seguinte mudança

   if(idade >= 18 && temCarteira == "S"){
        mostra("Você pode dirigir.")
    }    
    else if(idade >= 18 && temCarteira == "N"){
        mostra("Você não tem carteira")
    }
   else {
        mostra("Você não tem idade para dirigir e obter uma carteira")
   }