Em Javascript existem algumas variáveis ou expressões que podem gerar um valor verdadeiro (true) ou falso (false). Elas chamadas de truthy e falsy que são valores que dentro do Javascript podem gerar um valor booleano quando aplicados em uma estrutura de decisão if por exemplo.
O truthy para o javascript é algo que pode assumir o valor de true. Abaixo alguns exemplo de valores truthy em Javascript:
if (true)
if ({})
if ([])
if (1)
if (-1)
if (Infinity)
if (-Infinity)
if (“texto”)
O falsy é algo que dentro do Javascript pode ser avaliado como false. Abaixo alguns exemplos:
if (false)
if (null)
if (undefined)
if (0)
if (-0) // Sim, em Javascript existe o -0 kkkkk
if (NaN)
if ('')
Vale ressaltar que a maior parte (se não todas) dos tipos que possuem um valor atribuído (diferente de null), resultam em true se testadas em um if. E isso vale não só pra Javascript, mas várias outras também (que eu posso afirmar, Java e C# respondem com true pra uma variável inicializada, desde que não seja um 0 não-literal.
No JS decisões tomadas com base em truthy/falsy são muito comuns, especialmente lidando com respostas de requisições assíncronas ou configurando variáveis de ambiente. Apesar de terem mencionado que em outras linguagens tipadas existe um certo teor de truthy/falsy, pra muitas linguagens, isso é considerado um pitfall enquanto que no JS é uma prática encontrada em quase todo lugar e pode confundir que não está acostumado na hora de rastrear o código.