Depuração JavaScript: do console ao profiler — um guia completo para quem não tem medo de bugs
\n\nVocê já escreveu JavaScript, executou o código e, como resposta, silêncio? Ou, pior ainda, o console ficou vermelho de erros, e você olhou para a tela como se fossem hieróglifos? Familiar? Então este artigo é seu salva-vidas.
\n\nA depuração de código JavaScript não é apenas encontrar erros de digitação. É a arte de entender como seu código vive, respira e quebra. E, como um verdadeiro detetive, você deve aprender a coletar pistas, interrogar testemunhas (variáveis) e pegar o criminoso (bug) em flagrante.
\n\nNeste artigo, abordaremos técnicas de depuração JS que transformarão você de um desenvolvedor que adivinha em um verdadeiro Sherlock Holmes. E sim, prometo que será prático e sem teoria chata.
\n\nPor que a depuração JavaScript não é uma dor, mas um superpoder?
\n\nSejamos honestos: bugs existiram, existem e existirão. A diferença entre um novato e um profissional não é que o profissional não escreve bugs, mas sim a rapidez com que os encontra e corrige. Ferramentas de depuração em JavaScript são seu arsenal pessoal. Quanto melhor você as dominar, mais rápido corrige o código.
\n\nMas há um detalhe: JavaScript é uma linguagem assíncrona, orientada a eventos e (às vezes) imprevisível. Erros podem surgir em qualquer lugar e a qualquer momento. Portanto, a depuração de scripts requer uma abordagem sistemática e as ferramentas certas.
\n\n1. Console.log: seu primeiro amigo e principal inimigo
\n\nVamos começar com o mais simples e acessível — console.log(). Este método é familiar para todos que já escreveram JavaScript. Mas você sabia que pode usá-lo de forma muito mais eficaz?
Truques simples, mas poderosos com console
\n\nEm vez de escrever console.log(value), tente:
const user = { name: 'Ana', age: 28, role: 'admin' };\nconsole.log('User object:', user);\n// ou use estilos\nconsole.log('%cMensagem importante', 'color: red; font-size: 20px; font-weight: bold');\n\nE ainda tem o console.table() — pura magia para arrays de objetos:
const users = [\n { name: 'João', age: 25 },\n { name: 'Maria', age: 32 },\n { name: 'Pedro', age: 19 }\n];\nconsole.table(users);\n\nIsso exibirá os dados em forma de uma bela tabela. Útil quando você precisa avaliar rapidamente a estrutura dos dados.
\n\nAgrupamento e contagem
\n\nQuando há muito código e ainda mais logs, use console.group():
console.group('Processamento de usuários');\nconsole.log('Passo 1: validação');\nconsole.log('Passo 2: salvamento');\nconsole.log('Passo 3: envio de e-mail');\nconsole.groupEnd();\n\nE o console.count() ajudará a entender quantas vezes uma função é executada:
function handleClick() {\n console.count('Clique');\n}\n// A cada clique será exibido: Clique: 1, Clique: 2, ...\n\nImportante: não abuse do console.log em produção. Sempre remova os loggers antes do deploy ou use flags de depuração.
2. Debugger: ponto de entrada no mundo da depuração
\n\nSe console.log é o reconhecimento, debugger é a invasão completa no código. Coloque a linha debugger; no local desejado, e a execução parará exatamente ali.
function calculateDiscount(price, discount) {\n debugger; // A execução parará aqui\n const result = price - (price * discount / 100);\n return result;\n}\n\ncalculateDiscount(1000, 15);\n\nQuando o navegador encontrar debugger, ele abrirá as ferramentas do desenvolvedor (se estiverem fechadas) e mostrará o estado atual de todas as variáveis, a pilha de chamadas e o escopo. É como uma pausa no cinema — você pode examinar cada quadro.
Como funciona na prática
\n\n- \n
- Você coloca
debugger;no local suspeito do erro \n - Executa o código \n
- No painel De