Verificação de string vazia, null e undefined em JavaScript: guia completo

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

Introdução: por que essa tarefa é mais fácil do que parece

\n\n

Todo desenvolvedor que já escreveu em JavaScript já se deparou com a situação de precisar verificar se uma string está vazia, ou se talvez seja null ou undefined. Parece simples, certo? Mas sejamos honestos: quantas vezes você escreveu if (str == "") e teve um bug quando a variável era null? E quantas vezes você tentou chamar .trim() em undefined e viu um erro vermelho no console?

\n\n

Este tópico é uma das perguntas mais populares no Stack Overflow, com dezenas de milhares de visualizações. E não é à toa. JavaScript tem muitas nuances que transformam uma verificação simples em um campo minado. Neste artigo, vamos analisar todas as formas possíveis, desde as mais óbvias até as profissionais, e descobrir qual é a melhor para usar no seu projeto.

\n\n

Vamos falar sobre o que são valores falsy, como funcionam os operadores == e ===, e por que "" e 0 não são a mesma coisa que false. Ao final do artigo, você saberá exatamente como escrever uma verificação universal que não falhará.

\n\n

O problema: o que considerar como string "vazia"?

\n\n

Antes de escrever código, precisamos definir claramente o que estamos verificando. No contexto da pergunta "How do I check for an empty/undefined/null string in JavaScript?", geralmente nos referimos a três estados:

\n\n
    \n
  • String vazia ("" ou '') — string de comprimento zero.
  • \n
  • null — ausência intencional de valor.
  • \n
  • undefined — variável declarada, mas não inicializada.
  • \n
\n\n

Mas há um quarto caso implícito: uma string composta apenas por espaços (" "). Muitas vezes ela também é considerada "vazia" do ponto de vista da lógica de negócios. Vamos analisar todas as variações.

\n\n

Método 1: Conversão booleana (o mais simples)

\n\n

A forma mais popular e concisa é usar o fato de que JavaScript converte automaticamente valores para true ou false em um contexto booleano.

\n\n
let str = "";\n\nif (!str) {\n    console.log("String vazia, null ou undefined");\n} else {\n    console.log("String não está vazia");\n}\n
\n\n

Este código funcionará para "", null, undefined, 0, NaN e false. Por quê? Porque todos esses valores em JavaScript são considerados falsy. Se você tem certeza de que a variável é uma string (ou pode ser null/undefined), este método é suficiente.

\n\n

Mas há um problema: se a variável for 0 (número), a verificação também dirá "vazio". Se isso for crítico, este método não é adequado.

\n\n

Método 2: Comparação estrita (controle explícito)

\n\n

Se você quiser ser o mais preciso possível e verificar apenas os três estados mencionados, use a comparação estrita (===).

\n\n
function isEmptyOrNull(str) {\n    return str === "" || str === null || str === undefined;\n}\n\nconsole.log(isEmptyOrNull(""));      // true\nconsole.log(isEmptyOrNull(null));    // true\nconsole.log(isEmptyOrNull(undefined)); // true\nconsole.log(isEmptyOrNull("hello")); // false\nconsole.log(isEmptyOrNull(0));       // false (número não passará)\n
\n\n

Este código funciona sem surpresas. Ele não confunde 0 ou false com uma string vazia. Mas ele não trata strings compostas apenas por espaços.

\n\n

Método 3: Trim + verificação (para "vazio" real)

\n\n

Frequentemente, os usuários inserem espaços em formulários, e a string " " visualmente parece vazia. Para capturar também esses casos, precisamos remover os espaços usando o método .trim().

\n\n
function isBlank(str) {\n    return !str || str.trim() === "";\n}\n\nconsole                

Blogs

Book Recommendations