Booleans e comparações
5 == "5" é true, mas 5 === "5" é false. O sinal de igual triplo também confere se os dois lados são do mesmo tipo.
Perguntas com resposta sim ou não
Os programas fazem perguntas o tempo todo. A senha é comprida o bastante? O jogador ficou sem vidas? Hoje é fim de semana? Cada uma tem uma de duas respostas, e o JavaScript as representa com os dois valores boolean, true e false. Os booleans levam o nome de George Boole, o matemático do século XIX que criou uma álgebra do verdadeiro e do falso. Sozinhos não são muito empolgantes, mas são eles que permitem que um programa tome decisões, o assunto da próxima unidade.
Operadores de comparação
Uma comparação recebe dois valores e produz um boolean. As seis que você mais vai usar estão abaixo. Repare que "igual" se escreve com três sinais de igual, porque um único = já quer dizer "guardar um valor".
| Operador | Pergunta | Exemplo | Resultado |
|---|---|---|---|
| === | igual? | 4 === 4 | true |
| !== | diferente? | 4 !== 4 | false |
| < | menor que? | 3 < 8 | true |
| > | maior que? | 3 > 8 | false |
| <= | menor ou igual? | 8 <= 8 | true |
| >= | maior ou igual? | 7 >= 8 | false |
Como na aritmética, uma comparação é uma expressão, então você pode mostrá-la ou guardá-la numa variável: const isAdult = age >= 18; põe true ou false em isAdult conforme a idade. Nomes de variáveis boolean costumam começar com is, has ou can, o que faz o código soar como uma pergunta.
Por que === e não ==
O JavaScript também tem o igual duplo, ==, chamado igualdade solta. Antes de comparar, ele tenta converter os dois lados para o mesmo tipo, o que dá resultados difíceis de prever: 5 == "5" é true, e 0 == "" também. O igual triplo ===, a igualdade estrita, nunca converte. Se os tipos são diferentes, a resposta é simplesmente false. O MDN e a maioria dos guias de estilo recomendam === e !== no código do dia a dia, e este curso os usa do começo ao fim.
console.log(5 === 5); // true
console.log(5 === "5"); // false
// igualdade solta, melhor evitar:
console.log(5 == "5"); // true
console.log("cat" !== "dog"); // trueStrings também podem ser comparadas. === confere se duas strings têm exatamente os mesmos caracteres, maiúsculas incluídas, então "Yes" === "yes" é false. Os operadores < e > comparam strings caractere por caractere usando os códigos dos caracteres, o que fica perto da ordem do dicionário para palavras em minúsculas: "apple" < "banana" é true. As letras maiúsculas vêm antes de todas as minúsculas nessa ordem, então "Zebra" < "apple" também é true.
Juntando respostas com &&, || e !
Perguntas reais muitas vezes têm várias partes. Um brinquedo do parque pode exigir altura de pelo menos 120 cm e idade de pelo menos 8 anos. O JavaScript junta respostas boolean com operadores lógicos. && (e) só é true quando os dois lados são true. || (ou) é true quando pelo menos um lado é true. ! (não) inverte um boolean, então !true é false.
const height = 130;
const age = 7;
console.log(height >= 120 && age >= 8); // mostra false
console.log(height >= 120 || age >= 8); // mostra true
console.log(!(age >= 8)); // mostra trueExemplo resolvido. Um dia é fim de semana? day === "Sat" || day === "Sun". Repare que é preciso repetir day === dos dois lados. Escrever day === "Sat" || "Sun" parece natural em inglês, mas não faz o que você quer, porque "Sun" sozinho não é uma comparação. As comparações são resolvidas antes de && e ||, então height >= 120 && age >= 8 não precisa de parênteses extras, embora pôr parênteses nunca atrapalhe.
Mais uma ideia que você vai encontrar depois: quando o JavaScript precisa de um boolean mas recebe outro valor, ele trata alguns valores como false. Esses valores falsy são false, 0, a string vazia "", null, undefined e NaN. Todo o resto, inclusive "0" e "false" como strings, conta como true.
e && exige os dois true. ou || exige um true. não ! inverte a resposta.
| boolean | true ou false |
| === | Igualdade estrita: mesmo valor e mesmo tipo |
| !== | Desigualdade estrita: não são iguais |
| == | Igualdade solta: converte os tipos antes (evite) |
| && | e: true só se os dois lados forem true |
| || | ou: true se pelo menos um lado for true |
| ! | não: troca true por false e vice-versa |
| falsy | false, 0, "", null, undefined e NaN |
- O que isto mostra?
console.log(7 > 7);- true
- false
- O que isto mostra?
console.log(7 >= 7);- true
- false
- O que isto mostra?
console.log(3 === "3");- true
- false
- O que isto mostra?
console.log(3 == "3");- true
- false
- O que isto mostra?
console.log(true && false);- true
- false
- O que isto mostra?
console.log(true || false);- true
- false
- O que isto mostra?
const x = 12; console.log(x > 10 && x < 20);- true
- false
- O que isto mostra?
console.log(!(5 > 2));- true
- false
- O que isto mostra?
console.log("Yes" === "yes");- true
- false
- O que isto mostra?
console.log("apple" < "banana");- true
- false
- Qual valor é falsy?
"0"0"false"
- Qual confere corretamente se day é "Sat" ou "Sun"?
day === "Sat" || "Sun"day === "Sat" || day === "Sun"day === "Sat" && day === "Sun"
- Comparações produzem true ou false.
- Use === e !==; == converte tipos e surpreende as pessoas.
- && exige os dois, || exige um, ! inverte.
- Repita a comparação completa de cada lado do || e do &&.
- Valores falsy: false, 0, "", null, undefined, NaN.
Fontes deste curso (2)
- MDN Web Docs, JavaScript Guide (developer.mozilla.org/en-US/docs/Web/JavaScript/Guide, chapters Introduction, Grammar and types, Control flow, Loops and iteration, Functions, Expressions and operators, Numbers and strings, Indexed collections, Working with objects; checked 2026-10-17)
- Ecma International, ECMA-262 ECMAScript 2026 Language Specification, 17th edition, June 2026 (tc39.es/ecma262 and ecma-international.org/publications-and-standards/standards/ecma-262, checked 2026-10-17)
Data de verificação: 2026-10-17