Expressões verdadeiras/falsas `(Truthy/Falsy)` no JavaScript

Controle de Fluxo / Tutorial JavaScript

No JavaScript, valores podem ser avaliados como "verdadeiros" (truthy) ou "falsos" (falsy) em contextos booleanos, como em condições de um if. Isso é útil para simplificar verificações e controlar o fluxo do programa.

Valores falsos (falsy)

Os valores considerados falsos no JavaScript são:

  • false
  • 0 (número zero)
  • "" ou '' (string vazia)
  • null
  • undefined
  • NaN (Not-a-Number)

Qualquer valor diferente desses será avaliado como truthy.

Exemplo:

if (0) {
    console.log("Este código não será executado.")
} 
else {
    console.log("0 é um valor falso.")
}

Saída:

0 é um valor falso.

Valores verdadeiros (truthy)

Todos os valores que não são falsy são considerados truthy. Exemplos incluem:

  • Números diferentes de zero (positivos ou negativos)
  • Strings não vazias ("hello", "0", etc.)
  • Arrays ([]) e objetos ({})
  • true

Exemplo:

if ("hello") {
    console.log("Strings não vazias são truthy (verdadeiros).")
}

Saída:

Strings não vazias são truthy (verdadeiros).

Uso prático de Truthy e Falsy

Verificar se uma variável está definida

let nome = ""

if (nome) {
    console.log("Nome definido:", nome)
} 
else {
    console.log("Nome não definido.")
}

Saída:

Nome não definido.

Valores padrão com ||

Você pode usar o operador lógico || para definir valores padrão:

let corFavorita = null
let cor = corFavorita || "azul"

console.log(cor) // Saída: azul

Negação com !

O operador ! pode ser usado para verificar se um valor é falsy:

let ativo = 0

if (!ativo) {
    console.log("A conta está inativa.")
}

Saída:

A conta está inativa.

Atenção aos valores enganosos

Alguns valores podem parecer falsy à primeira vista, mas são avaliados como truthy. É importante conhecê-los para evitar erros no código.

Exemplos:

// Números decimais são "Truthy"
console.log( Boolean(0.01) ) // imprime true

// Números degativos são "Truthy"
console.log( Boolean(-10) ) // imprime true

// Strings com espaços são "Truthy"
console.log( Boolean(' ') ) // imprime true

// Strings que não estejam vazias são "Truthy"
console.log( Boolean('false') ) // imprime true

// Objetos vazios são "Truthy"
console.log( Boolean({}) ) // imprime true

// Arrays vazios são "Truthy"
console.log( Boolean([]) ) // imprime true

Esses valores podem causar confusão, então sempre revise as condições cuidadosamente para garantir que o comportamento do código seja o esperado.

Dicas práticas

  1. Lembre-se dos valores falsy para evitar comportamentos inesperados.
  2. Use !! para converter valores em booleanos explícitos.
  3. Teste diferentes valores para entender como o JavaScript os avalia.

Compreender truthy e falsy ajuda a escrever código mais limpo e eficiente no JavaScript. Experimente usar essas expressões em seus projetos!