O If recebe o resultado de uma operação lógica dentro de seus parênteses certo? Ao colocarmos: "if(idade > 18 && temCarteira == S) { mostra("Pode dirigir"); }" o programa entende que: "idade > 18" e "temCarteira == S" se tratam de condições, ou seja, podem ser verdadeiras ou falsas, 0 ou 1.. Não depende de ser string ou não.. a variável temCarteira recebe como "resposta" S ou N (verdadeiro ou falso) e quando o usuário digita S, já que no if declaramos que se "temCarteira == S", isso se torna verdade, ou seja, uma condição para ele dirigir está verdadeira, basta ver a idade agora.. se a idade for > que 18 (se for verdadeiro) o usuário pode dirigir.. Estou aprendendo também então talvez a minha explicação ficou confusa.. mas espero ter ajudado. Vou deixar meu código aqui embaixo pra você!
<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 S ou N");
if(idade > 18 && temCarteira == S) {
mostra("Pode dirigir");
} else{
mostra("Não pode dirigir");
}
</script>
isso eu entendo, so fiquei um pouco confuso se tipo. eu usasse o " carteira" como parametro exemplo : if ( idade > 18 && temCarteira = carteira); isso não iria funcionar.