Avaliação de Curto-Circuito (Short-Circuit)
A avaliação de curto-circuito é uma técnica frequentemente utilizada em JavaScript para simplificar a lógica condicional em expressões booleanas. Essa abordagem é fundamentada na distinção entre Falsy Values e o False Literal.
Falsy Values vs. False Literal
Falsy Values
-
Falsy Values são valores que, em contextos de avaliação booleana, são tratados como
false
pelo JavaScript. A lista desses valores inclui:0
''
(aspas simples),""
(aspas duplas), (crase) . A avaliação comofalse
ocorre apenas quando astring
está vazia.null
,undefined
NaN
Observação: Valores ausentes nesta lista são avaliados como
true
. -
Vantagem dos Falsy Values
A presença desses valores na linguagem proporciona uma simplificação notável na lógica do programa, eliminando a necessidade de estruturas condicionais como
if-else
.- Exemplo: Forma tradicional
const corUsuario = null;
let corPadrao;
if (corUsuario === null) {
corPadrao = "preto";
} else {
corPadrao = corUsuario;
}
console.log(corPadrao); // preto
- Exemplo: Utilizando Falsy Values
let corUsuario = null;
const corPadrao = corUsuario || "preto";
console.log(corPadrao); // preto
False Literal
O único False Literal no JavaScript é o false
.
Short-Circuit
O Short-Circuit é uma técnica que explora a avaliação de curto-circuito para determinar o valor resultante de uma expressão lógica. Em JavaScript, o operador lógico &&
(AND) utiliza essa técnica. Ele retorna o primeiro valor que é avaliado como false
ou o último valor se todos são avaliados como true
.
function falarOi() {
return "Oi";
}
const executar = false;
executar && falarOi(); // Não executa a função, pois executar é false
function falarOi() {
return "Oi";
}
const executar = true;
console.log(executar && falarOi()); // Executa a função, retorna "Oi"
console.log(0 || false || null || "Luiz Otávio" || true); // Retorna "Luiz Otávio"
console.log(0 || false || null || true || "Luiz Otávio"); // Retorna true
Nota
||
: Retorna o primeiro valortrue
da expressão.
Observações
- Quando uma
string
está entre aspas, mesmo que represente a palavra “false,” ela não é considerada um Falsy Value literalmente:
console.log(0 || false || null || "false" || NaN); // Retorna "false" (string)
- Caso a expressão contenha apenas valores avaliados como
false
, o último valor avaliado comofalse
será retornado:
console.log(0 || false || null || false || NaN); // Retorna NaN