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)ouBoolean(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
- A função
classificarrecebe um valor e usaBoolean(valor)para convertê-lo em booleano. - O operador ternário retorna
'truthy'se a conversão fortrue, e'falsy'caso contrário. - Criamos um array
valorescom os 10 valores pedidos. - Usamos um
for...ofpara percorrer o array. - Para strings, adicionamos aspas na representação para ficar claro que é uma string (ex.:
''). - Para outros valores, usamos
String(v)para obter uma representação textual. - 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) com0(número).'0'é truthy porque é uma string não vazia. - Usar
if (valor == false)em vez deif (!valor). A comparação frouxa comfalsepode dar resultados inesperados:[] == falseétrue, masBoolean([])é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