Médio JavaScript

Verificando truthy e falsy

Enunciado

Escreva uma função classificar(valor) que retorna 'truthy' se o valor for considerado verdadeiro em um contexto booleano, e 'falsy' caso contrário. Teste com os valores: 0, '', '0', [], {}, null, undefined, NaN, false e true.

Requisitos

  • A função deve usar coerção booleana (ex.: if (valor) ou Boolean(valor)).
  • Imprima o resultado para cada valor testado no formato valor => classificação.
  • Inclua pelo menos os 10 valores listados no enunciado.

Código inicial

// Complete a função classificar
function classificar(valor) {
  // seu código aqui
}

// Teste com os valores

Saída esperada

0 => falsy
'' => falsy
'0' => truthy
[] => truthy
{} => truthy
null => falsy
undefined => falsy
NaN => falsy
false => falsy
true => truthy
Ver dica

Use Boolean(valor) ou um if simples. Lembre-se: arrays e objetos vazios são truthy!

Mostrar solução
// Função que classifica um valor como truthy ou falsy
function classificar(valor) {
  // Boolean(valor) converte para true ou false
  return Boolean(valor) ? 'truthy' : 'falsy';
}

// Lista de valores para testar
const valores = [0, '', '0', [], {}, null, undefined, NaN, false, true];

// Itera e imprime cada resultado
for (const v of valores) {
  // Para exibir NaN e strings vazias de forma legível
  const representacao = typeof v === 'string' ? `'${v}'` : String(v);
  console.log(`${representacao} => ${classificar(v)}`);
}

Passo a passo

  1. A função classificar recebe um valor e usa Boolean(valor) para convertê-lo em booleano.
  2. O operador ternário retorna 'truthy' se a conversão for true, e 'falsy' caso contrário.
  3. Criamos um array valores com os 10 valores pedidos.
  4. Usamos um for...of para percorrer o array.
  5. Para strings, adicionamos aspas na representação para ficar claro que é uma string (ex.: '').
  6. Para outros valores, usamos String(v) para obter uma representação textual.
  7. Imprimimos no formato valor => classificação.

Por que funciona

A coerção booleana é aplicada automaticamente em contextos como if, while, &&, || e !. A função Boolean() torna essa conversão explícita. Os valores falsy são exatamente: false, 0, -0, 0n, '', null, undefined e NaN. Qualquer outro valor, incluindo arrays e objetos vazios, é truthy.

Erros comuns

  • Achar que [] é falsy. Na verdade, Boolean([]) é true. O mesmo vale para {}.
  • Confundir '0' (string com zero) com 0 (número). '0' é truthy porque é uma string não vazia.
  • Usar if (valor == false) em vez de if (!valor). A comparação frouxa com false pode dar resultados inesperados: [] == false é true, mas Boolean([]) é true.

Outra forma de resolver

Você pode usar !!valor em vez de Boolean(valor). O primeiro ! converte para booleano e nega; o segundo nega de novo, resultando no booleano original. É uma técnica comum, mas Boolean() é mais explícita.

Saída esperada

0 => falsy
'' => falsy
'0' => truthy
[] => truthy
{} => truthy
null => falsy
undefined => falsy
NaN => falsy
false => falsy
true => truthy