Os operadores de comparação comparam os valores de dois operandos e avaliam se a instrução que eles formam é true
ou false
. O exemplo a seguir usa o operador strict equality (===
) para comparar dois operandos: a expressão 2 + 2
e o valor 4
. Como o resultado da expressão e o valor numérico 4
são iguais, esta expressão é avaliada como true
:
2 + 2 === 4 > true
Coerção de tipo e igualdade
Dois dos operadores de comparação mais usados são ==
para igualdade aproximada e ===
para igualdade estrita. ==
realiza uma comparação aproximada entre dois valores, forçando os operandos a corresponder aos tipos de dados, se possível. Por exemplo, 2 == "2"
retorna true
, mesmo que a comparação seja feita entre um valor numérico e um valor de string.
2 == 2 > true 2 == "2" > true
O mesmo acontece com !=
, que retorna true
apenas se os operandos que estão sendo comparados não forem vagamente iguais.
2 != 3 > true 2 != "2" > false
Comparações estritas usando ===
ou !==
não realizam coerção de tipo. Para que uma comparação estrita seja avaliada como true
, os valores comparados precisam ter o mesmo tipo de dados. Por isso, 2 == "2"
retorna true
, mas 2 === "2"
retorna false
:
2 === 3 > false 2 === "2" > false
Para remover qualquer ambiguidade que possa resultar da coerção automática, use ===
sempre que possível.
Operador | Descrição | Uso | Resultado |
---|---|---|---|
=== | Estritamente igual | 2 === 2 | verdadeiro |
!== | Não é estritamente igual | 2 !== "2" | verdadeiro |
== | Igual (ou "vagamente igual") | 2 == "2" | verdadeiro |
!= | Diferente | 2 != "3" | verdadeiro |
> | Maior que | 3 > 2 | verdadeiro |
>= | Maior que ou igual a | 2 >= 2 | verdadeiro |
< | Menor que | 2 < 3 | verdadeiro |
<= | Menor que ou igual a | 2 <= 3 | verdadeiro |
Verdadeiro e falso
Todos os valores no JavaScript são implicitamente true
ou false
e podem ser forçados para o valor booleano correspondente. Por exemplo, usando o comparador "loosely equal". Um conjunto limitado de valores é forçado a false
:
0
null
undefined
NaN
- Uma string vazia (
""
)
Todos os outros valores são convertidos em true
, incluindo qualquer string que contenha um ou mais caracteres e todos os números diferentes de zero. Eles são comumente chamados de valores "verdadeiros" e "falsos".
"My string" == true > true 100 == true > true 0 == true > false
Operadores lógicos
Use os operadores lógicos AND (&&
), OR (||
) e NOT (!
) para controlar o fluxo de um script com base na avaliação de duas ou mais instruções condicionais:
2 === 3 || 5 === 5; > true 2 === 2 && 2 === "2" > false 2 === 2 && !"My string." > false
Uma expressão lógica NOT (!
) nega o valor verdadeiro ou falso de um operando, avaliando true
se o operando for false
e false
se o operando for true
:
true > true !true > false !false > true
Usar o operador lógico NOT (!
) em outro tipo de dados, como um número ou uma string, força esse valor a um booleano e inverte o valor verdadeiro ou falso do resultado.
"string" > "string" !"string" > false 0 > 0 !0 > true
É uma prática comum usar dois operadores NOT para forçar rapidamente os dados a corresponder ao valor booleano correspondente:
!!"string" > true !!0 > false
Os operadores lógicos AND e OR não realizam coerção por conta própria. Elas retornam o valor de um dos dois operandos que estão sendo avaliados, com o operando escolhido determinado por essa avaliação.
A operação lógica AND (&&
) retorna o primeiro dos dois operandos somente se esse operando for avaliado como false
. Caso contrário, o segundo operando será retornado. Em comparações que são avaliadas como valores booleanos, ele retorna true
somente se os operandos em ambos os lados do E lógico forem avaliados como true
. Se qualquer lado for avaliado como false
, ele retornará false
.
true && false > false false && true > false false && false > false true && true > true
Quando &&
é usado com dois operandos não booleanos, o primeiro operando é retornado inalterado se puder ser forçado para false
. Se o primeiro operando puder ser forçado a true
, o segundo operando será retornado inalterado:
false && "My string" > false null && "My string" > null "My string" && false > false "My string" && "My second string" > "My second string" 2 === 2 && "My string" > "My string"
A operação OR lógica (||
) retorna o primeiro dos dois operandos somente se esse operando for avaliado como true
. Caso contrário, o segundo operando será retornado. Em comparações que são avaliadas como valores booleanos, isso significa que o método retorna true
se um dos operandos for avaliado como true
. Se nenhum lado for avaliado como true
, ele retornará false
:
true || false > true false || true > true true || true > true false || false > false
Ao usar ||
com dois operandos não booleanos, ele retorna o primeiro operando inalterado se ele puder ser forçado para true
. Se o primeiro operando puder ser forçado a false
, o segundo operando será retornado inalterado:
false || "My string" > "My string" null || "My string" > "My string" "My string" || false > "My string" "My string" || "My second string" > "My string" 2 === 2 || "My string" > true
Operador de coalescência nulo
Introduzido no ES2020, o "operador de coalescência nulo" (??
) retorna o primeiro operando somente se ele tiver qualquer valor diferente de null
ou undefined
. Caso contrário, ele retorna o segundo operando.
null ?? "My string" > "My string" undefined ?? "My string" > "My string" true ?? "My string"; > true
??
é semelhante a uma operação lógica OR, mas é mais rigoroso na forma como o primeiro operando é avaliado. ||
retorna o segundo operando para qualquer expressão que possa ser forçada para false
, incluindo undefined
e null
. ??
retorna o segundo operando somente quando o primeiro é estritamente igual a null
ou undefined
, mesmo que possa ser forçado a false
:
0 ?? "My string"; > 0 false ?? "My string"; > false undefined ?? "My string"; > "My string"
Operadores de atribuição lógica
Use operadores de atribuição para atribuir o valor de um segundo operador a um primeiro operador. O exemplo mais comum é um único sinal de igual (=
), usado para atribuir um valor a uma variável declarada.
Use operadores de atribuição lógica para atribuir condicionalmente um valor a uma variável com base no valor verdadeiro ou falso dela.
O operador de atribuição lógica E (&&=
) avalia o segundo operando e o atribui ao primeiro se o primeiro for avaliado como true
. Ou seja, "se o primeiro operando for verdadeiro, atribua o valor do segundo operando:"
let myVariable = false; myVariable &&= 2 + 2; > false myVariable = true; myVariable &&= 2 + 2; > 4
O valor verdadeiro ou falso do primeiro operando determina se uma atribuição é realizada. No entanto, tentar avaliar o primeiro operando usando um operador de comparação resulta em um booleano true
ou false
, que não pode ser atribuído a um valor:
let myVariable = 5; myVariable > 2 &&= "My string" > SyntaxError: Invalid left-hand side in assignment
O operador de atribuição lógica OR (||=
) avalia o segundo operando e o atribui ao primeiro se ele for false
. Ou seja, "se o primeiro operando for falso, atribua o valor do segundo operando:"
let myVariable = false; myVariable ||= 2 + 2; > 4 myVariable = true; myVariable ||= 2 + 2; > true
Teste seu conhecimento
Qual operador indica "estritamente igual"?
===
==
=
!=