Operadores de comparação: perguntando se algo é igual, maior ou menor
Aprenda a comparar valores e obter respostas de 'verdadeiro' ou 'falso'.
Imagine que você está organizando uma festa e precisa decidir quem pode entrar. Você faria perguntas como: "A idade é maior ou igual a 18?", "O nome está na lista de convidados?", "A pessoa está vestindo a fantasia certa?".
Em programação, os operadores de comparação servem para fazer exatamente esse tipo de pergunta. Eles comparam dois valores e sempre retornam uma resposta booleana: true (verdadeiro) ou false (falso). Essa resposta é crucial para o JavaScript decidir qual caminho seguir no seu código.
Os operadores de comparação em JavaScript:
| Operador | Nome | Exemplo | Retorna true se... |
|---|---|---|---|
== |
Igual a (comparação frouxa) | 5 == '5' |
Os valores são iguais, mesmo que os tipos sejam diferentes (tenta converter). |
=== |
Estritamente igual a | 5 === '5' |
Os valores são iguais E os tipos são iguais. |
!= |
Diferente de (frouxa) | 5 != '5' |
Os valores são diferentes (tenta converter). |
!== |
Estritamente diferente de | 5 !== '5' |
Os valores são diferentes OU os tipos são diferentes. |
> |
Maior que | 10 > 5 |
O valor da esquerda é maior que o da direita. |
< |
Menor que | 10 < 5 |
O valor da esquerda é menor que o da direita. |
>= |
Maior ou igual a | 10 >= 10 |
O valor da esquerda é maior ou igual ao da direita. |
<= |
Menor ou igual a | 10 <= 5 |
O valor da esquerda é menor ou igual ao da direita. |
Exemplos práticos:
Vamos ver esses operadores em ação.
let idade = 25;
let idadeMinima = 18;
let nome = "Maria";
let outroNome = "joao";
let numeroTexto = "25";
// Operadores de Igualdade
// == (Igual a - comparação frouxa)
console.log("idade == 25:", idade == 25); // Saída: true (25 é igual a 25)
console.log("idade == numeroTexto:", idade == numeroTexto); // Saída: true (25 é igual a "25" após conversão)
// === (Estritamente igual a - comparação estrita) - RECOMENDADO!
console.log("idade === 25:", idade === 25); // Saída: true (25 é igual a 25 E ambos são Number)
console.log("idade === numeroTexto:", idade === numeroTexto); // Saída: false (25 é Number, "25" é String)
// != (Diferente de - comparação frouxa)
console.log("idade != 30:", idade != 30); // Saída: true (25 é diferente de 30)
console.log("idade != numeroTexto:", idade != numeroTexto); // Saída: false (25 não é diferente de "25" após conversão)
// !== (Estritamente diferente de - comparação estrita) - RECOMENDADO!
console.log("idade !== 30:", idade !== 30); // Saída: true (25 é diferente de 30 E ambos são Number)
console.log("idade !== numeroTexto:", idade !== numeroTexto); // Saída: true (25 é Number, "25" é String - tipos diferentes)
// Operadores de Ordem
// > (Maior que)
console.log("idade > idadeMinima:", idade > idadeMinima); // Saída: true (25 é maior que 18)
// < (Menor que)
console.log("idade < 20:", idade < 20); // Saída: false (25 não é menor que 20)
// >= (Maior ou igual a)
console.log("idade >= idadeMinima:", idade >= idadeMinima); // Saída: true (25 é maior ou igual a 18)
console.log("idade >= 25:", idade >= 25); // Saída: true (25 é maior ou igual a 25)
// <= (Menor ou igual a)
console.log("idade <= 20:", idade <= 20); // Saída: false (25 não é menor ou igual a 20)
console.log("idade <= 25:", idade <= 25); // Saída: true (25 é menor ou igual a 25)
A importância do === e !== (Comparação Estrita)
Esta é uma das dicas mais importantes para quem está começando em JavaScript: sempre que possível, use === e !==.
Por que? Porque == e != tentam "adivinhar" o que você quer comparar, convertendo os tipos de dados se eles forem diferentes. Isso pode levar a resultados inesperados e bugs difíceis de encontrar.
Exemplos de resultados "estranhos" com ==:
console.log(0 == false); // Saída: true (JavaScript considera 0 como falso)
console.log('' == false); // Saída: true (String vazia também é considerada falsa)
console.log(null == undefined); // Saída: true (Já vimos isso na lição anterior!)
console.log('1' == 1); // Saída: true (String '1' é convertida para Number 1)
Com ===, esses resultados são muito mais lógicos e previsíveis:
console.log(0 === false); // Saída: false (0 é Number, false é Boolean)
console.log('' === false); // Saída: false ('' é String, false é Boolean)
console.log(null === undefined); // Saída: false (null é null, undefined é undefined - tipos diferentes)
console.log('1' === 1); // Saída: false ('1' é String, 1 é Number)
Comparando Strings
Quando você compara strings com > ou <, o JavaScript usa a ordem alfabética (lexicográfica).
console.log("banana" > "maçã"); // Saída: false (b vem antes de m)
console.log("laranja" < "limão"); // Saída: true (r vem antes de m)
console.log("A" < "a"); // Saída: true (letras maiúsculas vêm antes das minúsculas na tabela ASCII/Unicode)
Os operadores de comparação são a espinha dorsal da lógica de decisão em seus programas. Com eles, você pode criar condições para que seu código reaja de diferentes maneiras, tornando-o dinâmico e inteligente.