edubun
Português

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".

OperadorPerguntaExemploResultado
===igual?4 === 4true
!==diferente?4 !== 4false
<menor que?3 < 8true
>maior que?3 > 8false
<=menor ou igual?8 <= 8true
>=maior ou igual?7 >= 8false

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"); // true

Strings 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 true

Exemplo 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.

booleantrue 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
falsyfalse, 0, "", null, undefined e NaN
  1. O que isto mostra?
    console.log(7 > 7);
    • true
    • false
  2. O que isto mostra?
    console.log(7 >= 7);
    • true
    • false
  3. O que isto mostra?
    console.log(3 === "3");
    • true
    • false
  4. O que isto mostra?
    console.log(3 == "3");
    • true
    • false
  5. O que isto mostra?
    console.log(true && false);
    • true
    • false
  6. O que isto mostra?
    console.log(true || false);
    • true
    • false
  7. O que isto mostra?
    const x = 12;
    console.log(x > 10 && x < 20);
    • true
    • false
  8. O que isto mostra?
    console.log(!(5 > 2));
    • true
    • false
  9. O que isto mostra?
    console.log("Yes" === "yes");
    • true
    • false
  10. O que isto mostra?
    console.log("apple" < "banana");
    • true
    • false
  11. Qual valor é falsy?
    • "0"
    • 0
    • "false"
  12. Qual confere corretamente se day é "Sat" ou "Sun"?
    • day === "Sat" || "Sun"
    • day === "Sat" || day === "Sun"
    • day === "Sat" && day === "Sun"
Pontos-chave
  • 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