Co

Comparação em JavaScript

12 exercícios

Sobre Comparação

Comparando números

Em JavaScript, números podem ser comparados usando os seguintes operadores relacionais e de igualdade.

Comparação Operador
Maior que a > b
Maior ou igual a a >= b
Menor que a < b
Menor ou igual a a <= b
(Estritamente) igual a a === b
(Estritamente) diferente de a !== b

O resultado da comparação é sempre um valor Boolean, ou seja, true ou false.

1 < 3;
// => true

2 !== 2;
// => false

1 === 1.0;
// => true
// All numbers are floating-points, so this is different syntax
// for the exact same value.

Comparando strings

Em JavaScript, os operadores de comparação acima também podem ser usados para comparar strings. Nesse caso, aplica-se uma ordem lexicográfica (de dicionário). Você encontra uma lista com a ordem exata de todos os caracteres aqui.

'Apple' > 'Pear';
// => false

'a' < 'above';
// => true

'a' === 'A';
// => false

Você precisa tomar cuidado ao comparar duas variáveis que parecem conter valores numéricos, mas são do tipo string. Por causa da ordem lexicográfica, o resultado não será o mesmo de comparar valores do tipo Number.

10 < 2;
// => false

'10' < '2';
// => true (because "1" comes before "2")

Outra forma de comparar strings é o método localeCompare. Ele permite definir várias opções para ajustar a maneira como as strings são comparadas.

Igualdade estrita

Talvez você se pergunte por que são três sinais de igual para verificar igualdade em JavaScript. O === representa a verificação de igualdade estrita, o que significa que nenhuma conversão de tipo é feita e valores de tipos diferentes são sempre diferentes.

'3' === 3;
// => false
// The value on the left has type string, the value on the right
// has type number.

1 === 1n;
// => false
// The value on the left has type number, the value on the right
// has type bigint.

Usar === e !== é a forma recomendada de verificar igualdade em JavaScript.

Evitando conversão implícita de tipos

Existem também == e !=, que representam a verificação de igualdade não estrita. Você deve evitá-los, porque eles aplicam conversão implícita de tipo antes de fazer a comparação. Os resultados nesses casos são difíceis de prever e, às vezes, não são o que você espera. Você pode ler mais sobre isso aqui.

0 == false;
// => true

Em teoria, você também pode comparar valores de tipos diferentes (por exemplo, "1" < 2). Nesse caso, os valores são convertidos implicitamente para determinar se o resultado é verdadeiro ou falso. Assim como verificar igualdade não estrita, isso também não é recomendado, pelo mesmo motivo mencionado acima.

E o que fazer no lugar disso? Você pode aplicar conversão explícita de tipos. Com isso, você garante que os valores tenham o tipo correto antes de fazer a comparação. Assim, seu código fica mais fácil de entender e menos propenso a erros.

Editar via GitHub O link abre em uma nova janela ou aba

Aprenda Comparação