Pular para o conteúdo
Cursos

DevClub

LógicaFront-endBack-endMobile

IA Club

IA na prática
Estudar programaçãoEstudar IA

Guia completo

JavaScript: o guia completo para aprender do zero

O que é JavaScript, para que serve, em que ordem estudar cada assunto e onde quase todo iniciante trava — por quem ensinou milhares de alunos a linguagem.

70 lições em trilha70 artigos no guiaAtualizado em agosto de 2026

JavaScript é a linguagem que roda dentro do navegador. Foi criada em 1995 para fazer pequenas interações numa página — validar um formulário, trocar uma imagem — e hoje é a única linguagem que todo navegador do mundo executa nativamente. Se alguma coisa acontece numa página sem recarregar, é JavaScript.

Nas três décadas seguintes ela saiu do navegador. Com o Node.js virou linguagem de servidor; com React Native e Electron, de aplicativo de celular e de desktop. Por isso ela permite atravessar várias partes de um produto sem trocar de sintaxe: tela, servidor, automação e acesso ao banco na mesma aplicação.

Este guia é o mapa. Ele diz o que estudar, em que ordem e onde as peças costumam se misturar. A sequência existe para reduzir carga mental, não para fingir que todo mundo aprende no mesmo ritmo.

O JavaScript trabalha sobre dados e APIs oferecidas pelo ambiente. Em palavras simples, a linguagem calcula e decide; o navegador ou o Node fornece recursos como DOM, rede, arquivo e temporizador. Separar essas duas camadas ajuda você a entender onde cada função realmente existe.

O atendente entre a página e os dados

Pense numa loja: as prateleiras e etiquetas já estão montadas, mas alguém ainda precisa reagir ao pedido, consultar o estoque e atualizar o total. O JavaScript cumpre esse papel de coordenação. No navegador, ele conversa com a página e com APIs web; no Node, conversa com servidor, arquivos e processos. A sintaxe da linguagem permanece, enquanto o conjunto de APIs muda.

No primeiro exercício, classifique cada nome usado como “linguagem” ou “API do ambiente” antes de rodar. Depois execute o mesmo raciocínio no console do navegador e no Node. Quando um nome existir em um lugar e não no outro, você terá verificado a fronteira entre JavaScript e ambiente.

Três coisas, essencialmente: reage a eventos, transforma dados e conversa com outros programas pela rede.

js
const nome = 'Ana';
const itens = 3;
const total = 479.7;

console.log(`Olá, ${nome}. Você tem ${itens} itens no carrinho, R$ ${total.toFixed(2)}.`);
Olá, Ana. Você tem 3 itens no carrinho, R$ 479.70.

Transformar dados é o trabalho mais frequente do dia a dia. Uma lista chega de algum lugar; você filtra, ordena, soma e devolve outra forma dela:

js
const alunos = [
  { nome: 'Ana', nota: 8.5 },
  { nome: 'Bruno', nota: 6.0 },
  { nome: 'Carla', nota: 9.2 },
];

const aprovados = alunos.filter((a) => a.nota >= 7);
const media = alunos.reduce((s, a) => s + a.nota, 0) / alunos.length;

console.log(aprovados.map((a) => a.nome));
console.log('média da turma:', media.toFixed(2));
[ 'Ana', 'Carla' ] média da turma: 7.90

E conversar com a rede — pedir dados a uma API e esperar a resposta chegar:

js
const resposta = await fetch('https://economia.awesomeapi.com.br/last/USD-BRL');
const dados = await resposta.json();

console.log(`1 dólar = R$ ${Number(dados.USDBRL.bid).toFixed(2)}`);
console.log('atualizado em:', dados.USDBRL.create_date);
1 dólar = R$ 5.14 atualizado em: 2026-08-21 18:19:51

Rode você mesmo e o número vai ser outro — é uma cotação ao vivo. A saída acima é a que apareceu aqui quando este guia foi revisado.

Essas três capacidades explicam por que a linguagem serve tanto para a interface quanto para o servidor. O que muda é o ambiente ao redor: no navegador existe document e não existe sistema de arquivos; no Node é o contrário.

Por que aprender JavaScript primeiro

Existem linguagens com sintaxe mais limpa para começar. Ainda assim, para quem quer trabalhar com desenvolvimento web, JavaScript é uma primeira escolha prática por quatro razões concretas.

Retorno visual imediato. Você escreve três linhas, abre o navegador e vê a coisa acontecer na tela. Esse retorno liga cada linha a um efeito visível e ajuda a depurar sem depender apenas de teoria.

Não precisa instalar nada para começar. O interpretador já está no navegador que você tem aberto agora. Pressione F12, vá em Console, escreva 2 + 2. Ambiente configurado.

Conecta as peças da web. A mesma base aparece no navegador, no Node, nos frameworks de interface e em muitos projetos que você vai precisar ler. Isso reduz a troca de contexto enquanto os fundamentos ainda estão se formando.

Cobre o projeto inteiro. Front-end, back-end com Node, aplicativo com React Native, script de automação. Você aprende uma sintaxe e circula por quatro mercados.

Para não deixar isso no abstrato, o ponto de partida muda conforme o objetivo:

se o seu objetivo é comece por onde o JavaScript entra
site, loja, painel — qualquer coisa com tela no navegador JavaScript é o assunto inteiro
API, banco de dados, integração entre sistemas JavaScript com Node é o assunto inteiro, do outro lado
aplicativo de celular JavaScript, e só então React Native é a base do caminho mais curto
usar IA no dia a dia: agentes, automações, prompts as ferramentas de IA direto entra quando a automação virar produto com tela
jogo não é aqui JavaScript serve para jogo de navegador, e só

A regra por trás da tabela: escolha a linguagem pelo lugar onde o resultado aparece, não pela linguagem que parece mais poderosa. Quem estuda a linguagem certa vê o próprio trabalho funcionando na primeira semana, e é isso que sustenta o segundo mês.

Onde rodar o código enquanto estuda

Você vai precisar de dois lugares, e nenhum deles exige instalar coisa alguma no primeiro dia.

O console do navegador. F12 (ou Cmd+Option+I no Mac), aba Console. É um interpretador completo, com acesso à página aberta. Ótimo para testar uma linha, péssimo para escrever trinta — não guarda o que você digitou.

Um arquivo .js com o Node. Instale o Node.js, salve um arquivo e rode node arquivo.js no terminal. É o ambiente em que todos os exemplos deste blog foram executados. Sem navegador, sem document: só a linguagem.

Quando a lógica já estiver de pé e você começar a mexer em página, o par index.html + <script src="app.js" defer></script> resolve. O defer é importante: sem ele, o script roda antes de a página existir, e você conhece a primeira família de erro do front-end antes da hora.

O caminho de estudo, em ordem

Esta é a sequência que a trilha de JavaScript segue. Ela não é a ordem em que os assuntos aparecem na documentação; é a ordem em que eles param de doer.

1. Lógica antes de sintaxe

Se você nunca programou, não comece por JavaScript: comece por lógica de programação. Variável, condição, repetição e função existem em todas as linguagens, e são o que realmente é difícil. A sintaxe é decorável em uma semana; o raciocínio, não.

Quem pula esta etapa costuma travar no primeiro exercício que exige montar um laço dentro de outro — e conclui, erradamente, que não leva jeito.

2. Variáveis e tipos

Variáveis em JavaScript cobre var, let, const, escopo de bloco e a zona morta temporal. Junto vêm os tipos primitivos: string, number, boolean, null, undefined.

Onde as pessoas travam: na diferença entre null e undefined, e em achar que const congela o conteúdo de um objeto. Não congela — o exemplo com o carrinho está lá na lição.

3. Operadores e condicionais

if, else, ternário, switch. E a parte que gera bug de verdade: comparação. == converte tipos antes de comparar, === não. Use === sempre, e você elimina uma família inteira de problemas antes de conhecê-la.

Ao lado disso, entenda valores falsos: 0, '', null, undefined e NaN são tratados como falso num if. É por isso que uma quantidade zero válida às vezes some da tela.

4. Laços

for, while, for...of. Na prática moderna, for...of resolve quase tudo, e os métodos de array resolvem o resto.

Onde as pessoas travam: em laço aninhado. Vale gastar um fim de semana só nisso, escrevendo tabuada, matriz e comparação de duas listas. Não tem atalho.

5. Funções

Funções em JavaScript é o divisor de águas da trilha. Declaração, expressão, arrow function, parâmetro default, rest e o this — assunto que vale estudar duas vezes, com um intervalo entre as leituras, porque o contexto só fica concreto quando aparece dentro de métodos e callbacks.

Onde as pessoas travam: em achar que arrow function é só uma forma mais curta de escrever function. Não é; ela trata o this de outro jeito, e a diferença só aparece no dia em que o código quebra.

6. Arrays e objetos

Os dois tipos com que você vai passar 80% do tempo. Arrays: map, filter, reduce, find, some, every. Objetos: acesso por ponto e por colchete, desestruturação, spread.

Este é o momento em que o código começa a parecer profissional. Um for de sete linhas vira um filter de uma.

7. DOM e eventos

Só agora o navegador entra de verdade. querySelector, addEventListener, criar e remover elementos, ler valor de formulário.

Onde as pessoas travam: em rodar o script antes da página existir, o que produz um null onde deveria haver um elemento — e em seguida um TypeError: Cannot read properties of undefined ou de null.

8. Assincronismo

setTimeout, Promise, async/await, fetch, tratamento de erro com try/catch. Aqui a mentalidade muda: o código deixa de acontecer de cima para baixo.

Onde as pessoas travam: em usar o resultado antes de ele existir. É o erro número um do JavaScript intermediário, e vale escrever à mão uma dúzia de chamadas a APIs públicas até que a ficha caia.

9. Módulos, erros e ferramentas

import/export, try/catch, throw, npm, e ler stack trace sem medo. Nesta altura você já tem o que precisa para pegar código de outra pessoa e entender.

10. Um projeto que você não abandona

Uma lista de tarefas com armazenamento local, um consumidor de API pública, uma calculadora de frete. Escolha um, termine, publique. Um projeto terminado ensina mais que cinco começados, e é a única coisa que um recrutador consegue avaliar.

Sintaxe moderna que vale conhecer cedo

A linguagem recebe atualização anual. Três recursos mudam o dia a dia de quem está começando, e nenhum deles é avançado.

Template literals — interpolação com crase, em vez de concatenação com +. Você já viu no primeiro exemplo deste guia.

Desestruturação e spread — extrair campos de um objeto ou array direto na declaração, e montar um objeto novo a partir de outro:

js
const pedido = {
  id: 1042,
  cliente: { nome: 'Ana Souza', uf: 'SP' },
  itens: ['Teclado', 'Mouse'],
};

const { id, cliente: { nome, uf } } = pedido;
const [primeiro, ...resto] = pedido.itens;

const atualizado = { ...pedido, status: 'enviado' };

console.log(id, nome, uf);
console.log(primeiro, resto);
console.log(Object.keys(atualizado));
1042 Ana Souza SP Teclado [ 'Mouse' ] [ 'id', 'cliente', 'itens', 'status' ]

O ...pedido copiou os campos existentes e status entrou por cima, num objeto novo — o original ficou intacto. Esse padrão é onipresente em React e em qualquer código que evite alterar dados no lugar.

Optional chaining e nullish coalescing?. e ??, que transformam três linhas de verificação em uma. Estão explicados em detalhe no artigo sobre o TypeError de undefined.

E, do lado da organização, classes com campos privados:

js
class Carrinho {
  #itens = [];

  adicionar(nome, preco) {
    this.#itens.push({ nome, preco });
    return this;
  }

  get total() {
    return this.#itens.reduce((s, i) => s + i.preco, 0);
  }
}

const carrinho = new Carrinho().adicionar('Teclado', 289.9).adicionar('Mouse', 149.9);
console.log(carrinho.total.toFixed(2));
console.log(carrinho.itens);
439.80 undefined

carrinho.itens é undefined de propósito: o campo #itens é privado e não existe fora da classe. Quem usa o carrinho só enxerga adicionar e total.

Os erros que você vai encontrar — e o que cada um diz

Boa parte do aprendizado é aprender a ler mensagem de erro. Cinco delas cobrem a esmagadora maioria dos primeiros meses, e cada uma tem um diagnóstico próprio.

SyntaxError — o código nem chegou a rodar. Quase sempre chave, parêntese ou aspas sem fechar. O editor costuma marcar antes do navegador.

ReferenceError: x is not defined — o nome não existe em nenhum escopo visível dali. Typo, ou você esqueceu de importar, ou declarou dentro de um bloco e usou fora.

ReferenceError: Cannot access 'x' before initialization — o nome existe, mas você chegou antes da linha que o define. É a zona morta temporal do let e do const, explicada em variáveis em JavaScript.

TypeError: x is not a function — o valor existe e não é chamável. Método com nome errado, ou variável que ainda vale undefined. Está detalhado em funções em JavaScript.

TypeError: Cannot read properties of undefined — o campeão absoluto. Você usou ponto em cima do nada. As quatro causas e as correções de cada uma estão em um artigo só sobre esse erro.

Repare no padrão: SyntaxError é escrita, ReferenceError é nome, TypeError é valor. Saber em qual das três famílias você caiu já corta o problema pela metade, antes de qualquer busca.

Onde as pessoas realmente travam

Depois de milhares de alunos, os pontos de parada se repetem com uma regularidade quase entediante. São cinco.

Laço aninhado. O primeiro obstáculo de verdade. Quem passa dele passa do resto.

this. O segundo. Não tente entender de uma vez; entenda o suficiente para usar, e volte depois.

Assincronismo. O terceiro, e o que mais dura. A dificuldade não é a sintaxe do await — é aceitar que o programa não espera.

Tutorial infinito. O quarto não é técnico. É assistir a aula atrás de aula sem escrever código. A sensação de progresso é real e o progresso não é. Se você não fechou o vídeo para tentar sozinho e errar, você não estudou.

Medo de mensagem de erro. O quinto, e o mais caro. A mensagem de erro é a melhor documentação que existe: ela diz o arquivo, a linha, a coluna e o que o motor esperava encontrar. Ler o erro inteiro, em voz alta se precisar, resolve mais rápido do que qualquer busca.

Como estudar sem se enganar

O maior risco do estudo autodidata não é escolher o material errado. É achar que está avançando quando não está. Três hábitos que separam quem chega de quem desiste no quarto mês.

Escreva o código à mão, sem copiar. Digitar o exemplo que já está pronto na tela ao lado parece estudo e não é. Feche a aula, escreva de memória, erre, compare depois. O erro é o mecanismo de aprendizado — pular o erro é pular a aula.

Explique em voz alta. Depois de fazer um exercício funcionar, explique para uma parede o que cada linha faz. Onde você gaguejar, tem buraco. Esse teste é brutalmente eficiente e leva dois minutos.

Revise o que já sabe. Uma vez por semana, refaça um exercício de duas semanas atrás. Vai parecer perda de tempo até a primeira vez que você não conseguir — e descobrir que “saber” era reconhecer, não produzir.

E um alerta sobre IA: usar um assistente para explicar um conceito é excelente; usar para escrever o exercício por você é o novo tutorial infinito, com um disfarce melhor. A pergunta útil é “por que isso funciona?”, não “escreve para mim”.

O que você não precisa aprender agora

Metade da ansiedade de quem começa vem de uma lista de tecnologias que alguém disse ser obrigatória. Quase nada nessa lista é urgente, e adiar as coisas certas é o que mantém o estudo possível.

TypeScript. Vale muito, e vale depois. TypeScript resolve um problema que você ainda não tem: código grande demais para caber na cabeça. Antes de sentir esse problema, os tipos viram só uma segunda sintaxe para decorar em cima de uma primeira que ainda não assentou.

Frameworks. React, Vue e Angular são camadas sobre JavaScript. Quem pula direto para o framework aprende a repetir um padrão sem saber o que ele faz por baixo, e trava no primeiro erro que sai do caminho feliz. A pergunta honesta é: você consegue montar uma lista que filtra e atualiza a tela usando só o DOM? Se sim, o framework vai fazer sentido em uma semana. Se não, ele vai virar mágica.

Estruturas de dados e algoritmos em profundidade. Big-O e árvore binária importam em entrevista de big tech e em problema específico. Para a primeira vaga, saber usar array e objeto bem resolve mais.

A configuração perfeita de editor. Trocar o tema pela quarta vez rende zero linha de código. Instale o editor, o Node e siga.

O que realmente vale antecipar é o Git — mesmo básico, mesmo só add, commit e push. Não porque a entrevista pede, mas porque é o que transforma “consegui” em “consigo voltar quando quebrar”. Perder duas semanas de projeto por não ter versionado é uma lição cara demais para se pagar duas vezes.

Quanto tempo isso leva

Com uma a duas horas por dia, de forma consistente:

  • Semanas 1 a 4 — lógica, variáveis, condicionais, laços. Você escreve scripts pequenos que rodam no console.
  • Semanas 5 a 10 — funções, arrays, objetos, DOM. Você monta páginas interativas sem copiar de ninguém.
  • Semanas 11 a 16 — assincronismo, APIs, módulos, um projeto publicado. Você tem o que mostrar numa entrevista.

Consistência vale mais que intensidade. Uma hora todo dia rende muito mais do que sete horas no sábado, porque programação é memória de procedimento — a mesma que aprende a dirigir. Precisa de repetição espaçada, não de maratona.

O que estudar depois

Terminada a base, três direções fazem sentido, nesta ordem de dificuldade:

Front-end com React. Componentes, estado e o ecossistema ao redor. A categoria de front-end cobre o caminho.

Back-end com Node.js. APIs, banco de dados, autenticação, deploy. Mesma linguagem, outra cabeça: agora você é responsável pelos dados de outras pessoas. Veja a categoria de back-end.

TypeScript. Tipos por cima do JavaScript. Não antes de ter escrito uns dois projetos sem eles — tipo só faz sentido quando você já sentiu falta de um.

E, seja qual for a direção, mantenha o hábito de ler código dos outros. Abra um repositório de uma biblioteca que você usa e leia uma função por dia. Nenhum curso substitui isso.

Para começar agora e na ordem certa, entre pela trilha de JavaScript do zero: as lições estão numeradas, cada uma tem código executado e o erro mais comum dela.

Trilha

JavaScript do zero

A trilha completa de JavaScript, em ordem de estudo: da primeira variável ao código assíncrono. Cada lição com código executado.

Ver a trilha
  1. 01O que é JavaScript e para que serve na prática
  2. 02Como executar JavaScript no navegador e no Node
  3. 03console.log: como imprimir valores no JavaScript
  4. 04Variáveis em JavaScript: como declarar e usar
  5. 05Variáveis em JavaScript: var, let e const na prática
  6. 06Tipos de dados em JavaScript e o operador typeof
  7. 07null, undefined e NaN: qual a diferença em JS
  8. 08Converter string em número em JavaScript
  9. 09Template literals: interpolação de string em JS
  10. 10Operadores aritméticos em JavaScript: do + ao **
  11. 11== ou ===: comparação e igualdade em JavaScript
  12. 12Operadores lógicos em JavaScript: &&, || e !
  13. 13Truthy e falsy em JavaScript: os 8 valores falsos
  14. 14Strings em JavaScript: criar, concatenar e escapar
  15. 15Métodos de string em JavaScript: os essenciais
  16. 16Números em JavaScript: arredondar e casas decimais
  17. 17Formatar moeda em JavaScript: real, Intl e centavos
  18. 18Número aleatório em JavaScript: Math.random na prática
  19. 19if else em JavaScript: como escrever condições
  20. 20Operador ternário em JavaScript: if em uma linha
  21. 21switch case em JavaScript: como usar e quando usar
  22. 22Laço for em JavaScript: sintaxe, break e continue
  23. 23while e do while em JavaScript: laços com condição
  24. 24Funções em JavaScript: como criar, chamar e reaproveitar
  25. 25Parâmetros e retorno de função em JavaScript
  26. 26Function expression vs declaration em JavaScript
  27. 27Arrow function em JavaScript: sintaxe e o this
  28. 28Função callback em JavaScript: o que é e exemplos
  29. 29Escopo em JavaScript: global, de função e de bloco
  30. 30Hoisting em JavaScript: o que é e como evitar erro
  31. 31Closure em JavaScript explicado com exemplos
  32. 32this em JavaScript: contexto, bind, call e apply
  33. 33Arrays em JavaScript: criar, ler e entender por dentro
  34. 34Adicionar e remover elementos de um array em JS
  35. 35Percorrer array em JavaScript: forEach, for of e for
  36. 36map, filter e reduce em JavaScript com exemplos
  37. 37Buscar elemento em array: find, includes e indexOf
  38. 38Ordenar array em JavaScript com sort()
  39. 39Array de objetos em JavaScript: filtrar e somar
  40. 40Objetos em JavaScript: criar, acessar e alterar
  41. 41Percorrer objeto em JavaScript: Object.keys e for in
  42. 42Desestruturação, spread e rest em JavaScript
  43. 43Optional chaining e nullish coalescing em JavaScript
  44. 44JSON em JavaScript: JSON.parse e JSON.stringify
  45. 45Datas em JavaScript: formatar data dd/mm/aaaa
  46. 46Classes em JavaScript: POO com class e constructor
  47. 47Herança em JavaScript: extends, super e prototype
  48. 48JavaScript assíncrono: event loop e call stack
  49. 49setTimeout e setInterval em JavaScript
  50. 50Promise em JavaScript: then, catch e finally
  51. 51async e await em JavaScript: como usar na prática
  52. 52Fetch API: como consumir uma API com JavaScript
  53. 53Promise.all, allSettled e race em JavaScript
  54. 54O que é o DOM em JavaScript e como funciona
  55. 55querySelector e getElementById: selecionar elementos
  56. 56innerHTML e textContent: alterar HTML com JavaScript
  57. 57classList e style: mudar o CSS com JavaScript
  58. 58createElement: criar e remover elementos com JS
  59. 59addEventListener: eventos de clique em JavaScript
  60. 60Objeto event, preventDefault e delegação de eventos
  61. 61Como pegar o valor de um input com JavaScript
  62. 62Validar formulário com JavaScript: guia prático
  63. 63localStorage: salvar dados no navegador com JS
  64. 64window.location: redirecionar página com JavaScript
  65. 65try catch em JavaScript: tratamento de erros
  66. 66Tipos de erro em JavaScript e como ler o console
  67. 67Debugar JavaScript no DevTools: passo a passo
  68. 68Módulos em JavaScript: import e export (ES Modules)
  69. 69Regex em JavaScript: expressões regulares na prática

Trilha

Carreira em programação

O Método DevClub aplicado à contratação: portfólio, currículo, LinkedIn, entrevista e negociação.

Ver a trilha
  1. 01Currículo de programador iniciante: o que cortar e o que pôr

Perguntas frequentes

Quanto tempo leva para aprender JavaScript?
Para escrever código útil sozinho, entre três e seis meses estudando de uma a duas horas por dia, com projeto rodando desde a primeira semana. Fluência de mercado vem depois, com repetição em problema real.
Preciso saber HTML e CSS antes?
O suficiente para montar uma página simples e entender o que é um elemento com id e classe. Não precisa dominar Flexbox nem Grid antes de começar a programar; os dois assuntos crescem juntos.
JavaScript e Java são a mesma coisa?
Não. São linguagens diferentes, de empresas diferentes, com sintaxe e usos diferentes. O nome foi decisão de marketing da Netscape em 1995, quando Java estava em alta.
Devo aprender TypeScript no lugar de JavaScript?
TypeScript é JavaScript com verificação de tipos por cima. Não existe aprender TypeScript sem saber JavaScript. Estude a base, escreva alguns projetos, e só então adicione tipos.

O código deste guia foi executado em Node 24.16.0, e as saídas exibidas são as reais — como produzimos este conteúdo.

Fontes consultadas

  1. MDN Web Docs — JavaScript — developer.mozilla.org
  2. ECMA-262 — ECMAScript Language Specification — tc39.es
  3. Stack Overflow Developer Survey 2025 — Technology — survey.stackoverflow.co