Operadores lógicos
A comparação deu uma resposta sim/não. No trabalho real muitas vezes precisa de várias ao mesmo tempo: idade suficiente e pontuação alta? membro ou convidado permitido? As ferramentas que unem ou invertem essas respostas são os operadores lógicos: &&, || e !. Você já conhece truthy e falsy; aqui aprende a ler os três símbolos do dia a dia e a confiar no boolean que produzem.
O que é um operador lógico?
Um operador lógico trabalha com valores parecidos com boolean. Não guarda num nome (=) e não pergunta «mesmo valor?» (===). Ele combina ou inverte resultados sim/não. Depois de true && false, o resultado é false. Depois de true || false, é true. Depois de !false, é true. Pode registar esse boolean, guardá-lo numa variável ou escrevê-lo na página.
Os operadores em resumo
📊 Operadores lógicos do dia a dia
| Operador | Leitura quotidiana | Resultado típico |
|---|---|---|
&& |
os dois lados passam? | true && true → true |
! |
inverter sim/não | !false → true |
Mantenha esta folha à mão. Para iniciantes, alimente estes operadores com booleanos claros de comparações (age >= 18) ou os literais true / false. Outros valores também contam como truthy ou falsy, mas um sim/não honesto reduz bugs.
console.log(true && true);
console.log(true && false);
console.log(false && true);
console.log(false && false);
let ok = true;
console.log(ok && true);
&& precisa dos dois lados
Dois ampersands significam «e». Ambos os lados devem ser truthy para a expressão inteira o ser. Se o esquerdo falha, a resposta combinada já é não — não existe «meio sim».
A consola imprime true, false, false, false, true. Só a primeira e a última linha passam nos dois lados. Pense numa porta com duas fechaduras: as duas chaves têm de funcionar.
console.log(true || true);
console.log(true || false);
console.log(false || true);
console.log(false || false);
let guest = false;
console.log(guest || true);
|| precisa de um lado
Duas barras verticais significam «ou». Se qualquer lado for truthy, a expressão inteira é truthy. Só quando ambos falham obtém false.
Vê true, true, true, false, true. Só a quarta linha é falha total. Um caminho aberto basta — como uma porta com duas chaves distintas em que qualquer uma abre sozinha.
console.log(!true);
console.log(!false);
let ready = false;
console.log(!ready);
let open = true;
console.log(!open);
! inverte a resposta
Um único ! à frente significa «não». Truthy torna-se falsy e o contrário. !ready serve quando quer «ainda não está pronto?» sem reescrever uma comparação mais longa.
A consola imprime false, true, true, false. ready era false, por isso !ready é true. open era true, por isso !open é false.
let age = 20;
let score = 75;
console.log(age >= 18 && score >= 60);
console.log(age >= 18 && score >= 90);
let member = false;
let pass = true;
console.log(member || pass);
Una comparações num só teste
A lógica do dia a dia quase sempre envolve resultados de comparação. age >= 18 && score >= 60 faz duas perguntas de ordem e une-as com «e». member || pass pergunta se algum caminho está aberto. Deixe === / >= para as perguntas; && / || para combinar as respostas.
let age = 20;
let score = 75;
let allowed = age >= 18 && score >= 60;
console.log(allowed);
let member = false;
let guestOk = true;
let enter = member || guestOk;
console.log(enter);
allowed é true (os dois testes passam). enter é true porque o caminho de convidado está aberto mesmo com member a false. A expressão lógica já produziu o boolean — só lhe deu um nome.
Mostrar um portão na página
Calcule um boolean combinado e escreva um rótulo curto na página.
<!DOCTYPE html>
<html>
<head>
<title>Logical — page gate</title>
</head>
<body>
<p id="out">…</p>
<script>
let age = 20;
let score = 75;
let allowed = age >= 18 && score >= 60;
let box = document.getElementById("out");
box.textContent = "allowed=" + allowed;
</script>
</body>
</html>
age é 20 e score é 75, ambos os lados de && passam e a página mostra allowed=true. Baixe score para 50, atualize e deve ver allowed=false. Mais tarde ramifica com if; esta demo só imprime o sim/não combinado.
Experimente você
- Registe
true && falseetrue || false. - Registe
!falsee!true. - Defina
let age = 16e registeage >= 18 && age < 65. - Defina
let age = 30e registe o mesmo teste de intervalo. - Veja
false || trueao lado defalse && truee note a diferença. - Na demo HTML mude só
score, atualize e leia o novo textoallowed=.
Erros comuns
- Escrever um único
&ou|— iniciantes querem&&e|| - Usar
&&quando queria===(combinar vs «igual?») - Esperar que
&&compare dois números sozinho — envolva cada lado numa comparação primeiro - Esquecer que
!inverte todo o boolean à frente - Alimentar valores confusos antes de ler truthy/falsy com calma — comece com resultados claros de comparação
Resumo
- Operadores lógicos combinam ou invertem resultados sim/não
&&precisa dos dois lados;||de pelo menos um;!inverte- Una resultados de comparação (
age >= 18 && score >= 60) para testes do dia a dia - Guarde o boolean se quiser um nome; mostre na página se quiser um rótulo
- Símbolos de comparação e lógicos têm trabalhos diferentes
- Seguinte: if-else — usar estes booleanos para escolher que código corre
🧠 Teste Seu Conhecimento
Teste Seu Conhecimento
Desafie-se com este questionário interativo e veja o quão bem você entende o tópico
📝 Instruções
- Leia cada pergunta cuidadosamente
- Selecione a melhor resposta para cada pergunta
- Você pode refazer o quiz quantas vezes quiser
- Seu progresso será mostrado no topo