DevPath · Aprenda a programar ESPTEN

Condicionais

Truthy/falsy e o operador ternário

Valores truthy e falsy

Aqui vai um truque que você vai usar todo dia. A condição de um if não precisa ser uma comparação: o JavaScript consegue olhar qualquer valor e decidir se ele "conta como verdadeiro". Há uma lista curtinha de valores falsy (eles se comportam como false) e todo o resto é truthy. Você só precisa decorar a lista curta; o resto sai por eliminação.

Valores falsy (são só estes seis, você decora em um minuto):

false
0
""        // string vazia
null
undefined
NaN       // "Not a Number": resultado de uma operação numérica inválida

NaN (Not a Number) aparece quando uma operação numérica não tem um resultado válido, por exemplo Number("olá") ou 0 / 0. É do tipo number, mas representa "não é um número válido", e é falsy.

Exemplos:

if ("olá") console.log("strings com texto são truthy");
if (0) console.log("isto NÃO é executado");
if ([]) console.log("um array vazio é truthy!");

Esse array vazio truthy pega todo mundo de surpresa na primeira vez, fique esperto. Essa ideia é ouro puro para verificar num piscar de olhos se uma variável "tem algo dentro":

const nome = "";
if (nome) {
  console.log("Olá " + nome);
} else {
  console.log("Falta o nome"); // executa: "" é falsy
}

O operador ternário

É o if/else de bolso: um if/else que cabe em uma linha e que retorna um valor. Quando você só quer escolher entre duas opções para uma variável, ele te economiza quatro linhas. Sua sintaxe é:

condição ? valorSeVerdadeiro : valorSeFalso
const idade = 20;
const mensagem = idade >= 18 ? "Adulto" : "Menor";
console.log(mensagem); // "Adulto"

É ideal para atribuições simples. Mas não se empolgue aninhando ternários dentro de ternários: se você precisar apertar os olhos para ler, volte para o bom e velho if/else. A legibilidade ganha sempre.

Exemplos

O usuário preencheu o nome? (truthy)

const usuario = "";
if (usuario) {
  console.log("Bem-vindo, " + usuario);
} else {
  console.log("Usuário anônimo");
}

Nível do jogador conforme os pontos (ternário)

const pontos = 80;
const nivel = pontos >= 50 ? "avançado" : "iniciante";
console.log("Nível:", nivel);
Coloque isto em prática

O DevPath é um curso prático: aqui você lê a teoria; no app você a coloca em prática com exercícios que rodam de verdade, offline.

Comece grátis no app →
← if, else if e elseA estrutura switch →