Esta página foi traduzida do inglês pela comunidade.Saiba mais e junte-se à comunidade MDN Web Docs.
AND lógico (&&)
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since julho de 2015.
O operador lógicoAND (&&) (conjunção lógica) para um conjunto de operandos booleanos serátrue se e somente se todos os operandos foremtrue. Caso contrário, seráfalse.
Geralmente, o operador retorna o valor do primeiro operandofalsy encontrado ao avaliar da esquerda para a direita ou retorna o valor do último operando se todos foremtruthy.
In this article
Exemplo
>Experimente
const a = 3;const b = -2;console.log(a > 0 && b > 0);// Expected output: falseSintaxe
expr1 && expr2Descrição
O AND lógico (&&) avalia operandos da esquerda para a direita, retornando imediatamente com o valor do primeiro operandofalsy que encontrar; se todos os valores foremtruthy, o valor do último operando é retornado.
Se um valor puder ser convertido emtrue, o valor é denominado comotruthy. Se um valor puder ser convertido emfalse, então valor será denominadofalsy.
Exemplos de expressões que podem ser convertidas emfalse são:
false;null;NaN;0;- string vazia (
""ou''ou``); undefined.
O operador AND lógico (&&) preserva valores não booleanos e os retorna como estão:
result = "" && "foo"; // result retorna "" (string vazia)result = 2 && 0; // result retorna 0result = "foo" && 4; // result retorna 4Mesmo que o operador&& possa ser usado com operandos não booleanos, ele ainda é considerado um operador booleano, pois seu valor de retorno sempre pode ser convertido em umboolean primitive.Para converter explicitamente seu valor de retorno (ou qualquer expressão em geral) para o valor booleano correspondente, use um doubleoperador NOT ou o construtorBoolean.
Avaliação de curto-circuito
A expressão AND lógica é um operador de curto-circuito. Ou seja, à medida que cada operando é convertido em um booleano, se o resultado de uma conversão forfalse, o operador AND para e retorna o valor original desse operando falso; elenão avalia nenhum dos operandos restantes.
Considere o pseudocódigo abaixo.
(alguma expressao falsa aqui) && expr
Aexprnunca é avaliada porque o primeiro operando(alguma expressao falsa aqui) é avaliado comofalsy. Seexpr for uma função, a função nunca será chamada. Veja o exemplo abaixo:
function A() { console.log("chamou A"); return false;}function B() { console.log("chamou B"); return true;}console.log(A() && B());// registra "chamou A" no console devido à chamada da função A,// && é avaliado como false (porque a função A retorna false), então false é registrado no console;// o operador AND entra em curto-circuito aqui e ignora a função BOperador precedente
O operador AND tem uma precedência maior que o operador OR, o que significa que o operador&& é executado antes do operador|| (consulteprecedência de operadores).
true || (false && false); // truetrue && (false || false); // false2 === 3 || (4 < 0 && 1 === 1); // falseExemplos
>Usando AND
O código a seguir mostra exemplos do operador&& (AND lógico).
a1 = true && true; // t && t retorna truea2 = true && false; // t && f retorna falsea3 = false && true; // f && t retorna falsea4 = false && 3 === 4; // f && f retorna falsea5 = "Cat" && "Dog"; // t && t retorna "Dog"a6 = false && "Cat"; // f && t retorna falsea7 = "Cat" && false; // t && f retorna falsea8 = "" && false; // f && f retorna ""a9 = false && ""; // f && f retorna falseRegras de conversão para booleanos
Convertendo AND para OR
A seguinte operação envolvendobooleanos:
bCondition1 && bCondition2é sempre igual a:
!(!bCondition1 || !bCondition2)Convertendo OR para AND
A seguinte operação envolvendobooleanos:
bCondition1 || bCondition2é sempre igual a:
!(!bCondition1 && !bCondition2)Removendo parênteses aninhados
Como as expressões lógicas são avaliadas da esquerda para a direita, sempre é possível remover os parênteses de uma expressão complexa desde que certas regras sejam seguidas.
A seguinte operação composta envolvendobooleanos:
bCondition1 || (bCondition2 && bCondition3)é sempre igual a:
bCondition1 || bCondition2 && bCondition3Especificações
| Specification |
|---|
| ECMAScript® 2026 Language Specification> # prod-LogicalANDExpression> |