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
falsepelo JavaScript. A lista desses valores inclui:0''(aspas simples),""(aspas duplas), (crase) . A avaliação comofalseocorre apenas quando astringestá vazia.null,undefinedNaN
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); // pretoFalse 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 é falsefunction 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 trueNota
||: Retorna o primeiro valortrueda expressão.
Observações
- Quando uma
stringestá 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 comofalseserá retornado:
console.log(0 || false || null || false || NaN); // Retorna NaN