Olá Lucas, tudo bem?
Existe uma outra forma de fazer sim, que deixará o código um pouco menor. Explicarei a seguir:
1º Iremos criar uma variável, que irá receber um array ou vetor []
que irá conter um conjunto de dados.
var possibilidadesResposta = ['sim', 's']
Os dados são o 'sim' e 's', isso é o mesmo que fazer como no código anterior: temCarteira == "s" || temCarteira == "sim"
Mas e as possibilidades de prompt em caixa alta?
Para isso, iremos declarar na especificação do if o método includes, dessa forma:
if (idade >= 18 && possibilidadesResposta.includes(temCarteira.toLowerCase())) {
Assim, estamos dizendo que a variável possibilidadesResposta inclui e recebe todas as possibilidades de entradas que não estejam em caixa baixa (SIM, S, sIm, siM), pois esses inputs serão transformados em caixa baixa para validação, ou seja, (toLowerCase)
.
O código completo ficará assim:
<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");
// Muitas formas de responder sim!! =(
var possibilidadesResposta = ['sim', 's']
if (idade >= 18 && possibilidadesResposta.includes(temCarteira.toLowerCase())) {
document.write("Pode dirigir!");
} else {
document.write("Não pode dirigir!");
}
</script>
Dessa forma, além de reduzir o código também resolvemos um problema, pois da forma que o código estava anteriormente, caso o usuário responde-se " sIm ou siM " por exemplo, a resposta não iria ser validada. Agora, qualquer configuração de caixa que o usuário responder, utilizando os caracteres 's' ou 'sim', será interpretado e validado corretamente.
Caso ainda não tenha aprendido sobre arrays, recomendo continuar o curso, pois mais para frente esse conceito será fortemente explorado.
Além disso, caso queira estudar uma pouco mais, vale a pena a leitura:
Espero ter ajudado, em caso de dúvidas fique a vontade para perguntar. Bons estudos!