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 como false ocorre apenas quando a string 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 valor true 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 como false será retornado:
console.log(0 || false || null || false || NaN); // Retorna NaN

Referências