PopularJornada
Aprenda JavaScript
Um curso de JavaScript online, grátis e interativo. Você escreve JS em cada aula — sintaxe, recursos modernos do ES6, funções, o DOM — com dicas de IA quando você travar e um certificado ao concluir.
245,770+ codders inscritos
- Ideal para iniciantes
Ajuda de codificação com IA
Lições interativas e práticas
Narração em áudio em todas as lições
Questionários para testar seu conhecimento
Certificado grátis de conclusão
Programa
Seção 1
Fundamentos
Começar seçãoIniciarExpandirRecolherConstrua uma base sólida com conceitos essenciais e habilidades básicasIntrodução
4 lições223- 01A LinguagemDesafio
- 02Olá Mundo!DesafioQuizÁudio
- 03ComentáriosQuizÁudio
- 04Estrutura do CódigoQuizÁudio
Variáveis
7 lições1247- 01NúmerosDesafioMaestriaQuizÁudio
- 02StringDesafioMaestriaQuizÁudio
- 03BooleanoDesafioMaestriaQuizÁudio
- 04Convenções de NomenclaturaDesafioMaestriaQuizÁudio
- 05Variáveis VaziasDesafioQuizÁudio
- 06Recapitulação - Inicializar VariáveisDesafio
- 07ConstantesDesafioMaestriaQuizÁudio
Operadores Parte 1
6 lições1037- 01Operadores AritméticosDesafioMaestriaQuizÁudio
- 02Operador de MóduloDesafioMaestriaQuizÁudio
- 03Atalhos AritméticosDesafioMaestriaQuizÁudio
- 04Operadores de ComparaçãoDesafioMaestriaQuizÁudio
- 05Igualdade Estrita vs Não EstritaDesafioQuizÁudio
- 06Recapitulação - Matemática SimplesDesafio
Operadores Parte 2
5 lições831- 01Operadores Lógicos Parte 1DesafioMaestriaQuizÁudio
- 02Operadores Lógicos Parte 2DesafioMaestriaQuizÁudio
- 03Recapitulação - Lógica SimplesDesafio
- 04Operadores Lógicos Parte 3DesafioMaestriaQuizÁudio
- 05Coerção de TiposDesafioQuizÁudio
Tomada de Decisão
5 lições729- 01Estrutura IfDesafioMaestriaQuizÁudio
- 02If - ElseDesafioMaestriaQuizÁudio
- 03Revisão - Calculadora SimplesDesafio
- 04If - Else AninhadoDesafioQuizÁudio
- 05Estrutura SwitchDesafioQuizÁudio
E/S Básica
6 lições931- 01SaídaDesafioMaestriaQuizÁudio
- 02Saída com VariáveisDesafioMaestriaQuizÁudio
- 03Conversão de Tipos - Parte 1DesafioMaestriaQuizÁudio
- 04Conversão de Tipos - Parte 2DesafioQuizÁudio
- 05Revisão - Até 120Desafio
- 06Revisão - Verdadeiro ou FalsoDesafio
Calculadora de Divisão de Conta
Projeto4 lições1- 01Mensagem de Boas-vindasDesafio
- 02Calculando a Gorjeta e o TotalProjeto
- 03Dividindo a ContaProjeto
- 04Saída FormatadaProjeto
Laços de Repetição
7 lições1345- 01Loop ForDesafioMaestriaQuizÁudio
- 02Loop WhileDesafioMaestriaQuizÁudio
- 03BreakDesafioMaestriaQuizÁudio
- 04ContinueDesafioMaestriaQuizÁudio
- 05Recapitulação - FatorialDesafio
- 06Loop Do WhileDesafioMaestriaQuizÁudio
- 07Loops AninhadosDesafioMaestriaQuizÁudio
Funções
8 lições1250- 01Declarar uma FunçãoDesafioMaestriaQuizÁudio
- 02ArgumentosDesafioMaestriaQuizÁudio
- 03RetornoDesafioMaestriaQuizÁudio
- 04Recapitulação - Função SigmaDesafio
- 05Expressão de FunçãoDesafioMaestriaQuizÁudio
- 06Parâmetros PadrãoQuizÁudio
- 07Arrow FunctionsDesafioMaestriaQuizÁudio
- 08Recapitulação - Função de ValidaçãoDesafio
FizzBuzz com um Diferencial
Projeto4 lições1- 01Visão Geral do JogoDesafio
- 02A Função FizzBuzzProjeto
- 03Percorrendo os NúmerosProjetoÁudio
- 04Adicionando o DiferencialProjeto
Arrays Parte 1
6 lições1037- 01Declarando um ArrayDesafioMaestriaQuizÁudio
- 02Acessando Elementos de um ArrayDesafioMaestriaQuizÁudio
- 03Modificando ArraysDesafioQuizÁudio
- 04Métodos de Array Parte 1DesafioMaestriaQuizÁudio
- 05Métodos de Array Parte 2DesafioMaestriaQuizÁudio
- 06Recapitulação - Processador de ArrayDesafio
Arrays Parte 2
8 lições1254- 01Iterando sobre ArraysDesafioQuizÁudio
- 02O Método forEachDesafioQuizÁudio
- 03Loop for...ofDesafioMaestriaQuizÁudio
- 04Recapitulação - Contador de PDesafio
- 05Fatiamento de ArraysDesafioMaestriaQuizÁudio
- 06Métodos de Array Parte 3DesafioMaestriaQuizÁudio
- 07Métodos de Array Parte 4DesafioMaestriaQuizÁudio
- 08Teste de PertencimentoDesafioQuizÁudio
Rastreador de Lista de Compras
Projeto4 lições1- 01Visão Geral do ProjetoDesafio
- 02Adicionar ItemProjeto
- 03Remover ItemProjeto
- 04Visualizar ListaProjeto
Desafios Finais
3 lições37- 01Pirâmide de NúmerosDesafioQuizÁudio
- 02Dobrar os ÍmparesDesafio
- 03O Que ComprarDesafio
Seção 2
Lógica & Fluxo
Começar seçãoIniciarExpandirRecolherDesenvolva habilidades de resolução de problemas e crie programas dinâmicos e interativosStrings em Profundidade
5 lições630- 01Fundamentos de StringsQuiz
- 02Iterar sobre StringsDesafioMaestriaQuiz
- 03Template LiteralsDesafioQuiz
- 04Métodos de StringDesafioMaestriaQuiz
- 05Recapitulação - String WeaverDesafio
Arrays Multidimensionais
9 lições1452- 01Fundamentos de Arrays 2DQuiz
- 02Acessando Elementos de Arrays 2DDesafioMaestriaQuiz
- 03Loops Aninhados com Arrays 2DDesafioMaestriaQuiz
- 04Recapitulação - Arrays 2DDesafio
- 05Adição e Subtração de MatrizesDesafioMaestriaQuiz
- 06Arrays IrregularesDesafioMaestriaQuiz
- 07Arrays 3D e AlémDesafioMaestriaQuiz
- 08Padrões Comuns de Arrays 2DDesafioMaestriaQuiz
- 09Recapitulação - Tudo Sobre ArraysDesafio
JSON Parte 1
7 lições944- 01O que é um JSON?Quiz
- 02Verificar se a Chave ExisteDesafioMaestriaQuiz
- 03Métodos de ObjetoDesafioMaestriaQuiz
- 04O Spread Operator Parte 1Quiz
- 05O Spread Operator Parte 2DesafioMaestriaQuiz
- 06Remover ChavesDesafioMaestriaQuiz
- 07Recapitulação - Manipular Chaves JSONDesafio
JSON Parte 2
6 lições530- 01Iterar sobre JSONDesafioQuiz
- 02JSON AninhadoDesafioQuiz
- 03Encadeamento Opcional em JSONQuiz
- 04Cópia Rasa e ProfundaDesafioQuiz
- 05Recapitulação - Loja de BicicletasDesafio
- 06Recapitulação - Sistema SolarDesafio
Sets Parte 1
8 lições749- 01O que é um Set?DesafioQuiz
- 02Iterando sobre SetsQuiz
- 03Adicionando um elementoDesafioQuiz
- 04Removendo um elementoDesafioQuiz
- 05Verificando se um elemento existeDesafioQuiz
- 06Tamanho e Is EmptyDesafioQuiz
- 07Copy e ClearDesafioQuiz
- 08Recapitulação - O básico de SetsDesafio
Conjuntos Parte 2
6 lições637- 01Matemática - União de ConjuntosDesafioQuiz
- 02Matemática - Interseção de ConjuntosDesafioQuiz
- 03Matemática - Diferença de ConjuntosDesafioQuiz
- 04Matemática - Diferença SimétricaDesafioQuiz
- 05Subconjuntos e SuperconjuntosDesafioQuiz
- 06Recapitulação - Agrupar AmigosDesafio
Sistema de Gerenciamento de Biblioteca
Projeto5 lições1- 01Visão Geral do ProjetoDesafio
- 02Adicionando LivrosProjeto
- 03Buscar por TítuloProjeto
- 04Filtrar por GêneroProjeto
- 05Marcar como LidoProjeto
Tópicos Interessantes sobre Arrays
4 lições422- 01Desestruturação de ArraysDesafioQuiz
- 02Sintaxe Spread em ArraysDesafioQuiz
- 03Arrays EsparsosDesafioQuiz
- 04Recapitulação - Workshop de ArraysDesafio
Métodos Avançados de Array
9 lições761- 01Os Métodos Join & SplitQuiz
- 02O Método MapDesafioMaestriaQuiz
- 03O Método FilterDesafioQuiz
- 04O Método ReduceDesafioQuiz
- 05Encadeamento de Métodos de ArrayDesafioQuiz
- 06ForEach e Map são iguais?Quiz
- 07O Método SortDesafioQuiz
- 08Os Métodos Find & FindIndexQuiz
- 09Recapitulação - O Mestre do EncadeamentoDesafio
Gerenciar Sistema de Festival
Projeto6 lições1- 01Visão Geral do ProjetoDesafio
- 02Adicionar Filmes e LocaisProjeto
- 03Adicionar SessãoProjeto
- 04Comprar IngressosProjeto
- 05Avaliar FilmesProjeto
- 06Cancelar SessõesProjeto
Seção 3
Introdução ao TypeScript
Começar seçãoIniciarExpandirRecolherIntrodução ao TypeScript após aprender sobre JavaScriptPrimeiros Passos com TS
5 lições232- 01O que é TypeScript?Quiz
- 02Por que usar TypeScript?Quiz
- 03Seu Primeiro Código TypeScriptDesafioQuiz
- 04Processo de Compilação e ErrosQuiz
- 05Recapitulação: Introdução ao TSDesafio
Tipos Principais
7 lições748- 01Tipos Básicos: str, num, booleanDesafioQuiz
- 02O Tipo 'any': Válvula de EscapeDesafioQuiz
- 03O Tipo 'unknown'DesafioQuiz
- 04Trabalhando com 'null' e 'undef'DesafioQuiz
- 05Inferência de Tipo na PráticaDesafioQuiz
- 06Anotações de Tipo ExplícitasDesafioQuiz
- 07Recapitulação: Prática de Tipos PrincipaisDesafio
Estrutura de Dados: Arrays e Tuplas
9 lições862- 01Arrays TipadosDesafioQuiz
- 02Modificador 'readonly' para ArraysDesafioQuiz
- 03O que é uma Tupla?Quiz
- 04Declarando e Acessando TuplasDesafioQuiz
- 05Desestruturando TuplasDesafioQuiz
- 06Tuplas ReadonlyDesafioQuiz
- 07Arrays Tipados MultidimensionaisDesafioQuiz
- 08Spread Operator com ArraysDesafioQuiz
- 09Recapitulação: Arrays e TuplasDesafio
Trabalhando com Funções
8 lições855- 01Tipagem de Parâmetros e RetornosDesafioQuiz
- 02Tipagem de Arrow FunctionsDesafioQuiz
- 03O Tipo de Retorno 'void'DesafioQuiz
- 04Parâmetros Opcionais com '?'DesafioQuiz
- 05Valores Padrão de ParâmetrosDesafioQuiz
- 06Tipagem de Rest ParametersDesafioQuiz
- 07Definindo Tipos de FunçõesDesafioQuiz
- 08Recapitulação: Criando Funções TipadasDesafio
Tipos: Aliases, Uniões e Interseções
7 lições751- 01Aliases de Tipos para PrimitivosDesafioQuiz
- 02Tipos de União ('|')DesafioQuiz
- 03Trabalhando com Tipos de UniãoDesafioQuiz
- 04Tipos LiteraisDesafioQuiz
- 05Tipos de Interseção ('&')DesafioQuiz
- 06Combinando Aliases de TiposDesafioQuiz
- 07Recapitulação: Combinações Avançadas de TiposDesafio
Tipagem de Objetos e Interfaces
8 lições757- 01Anotações de Tipo de Objeto InlineDesafioQuiz
- 02Type Aliases para ObjetosDesafioQuiz
- 03Introdução a InterfacesDesafioQuiz
- 04Interfaces vs. Type AliasesQuiz
- 05Props Opcionais e ReadonlyDesafioQuiz
- 06Estendendo Interfaces e TiposDesafioQuiz
- 07Adicionando Métodos a InterfacesDesafioQuiz
- 08Recapitulação: Definindo Formatos de ObjetosDesafio
Projeto: Uma Lista de Tarefas Simples
Projeto6 lições18- 01Projeto: Definindo a Struct de TarefaDesafioQuiz
- 02Função para Adicionar uma TarefaProjeto
- 03Função para Alterar o Status da TarefaProjeto
- 04Função: Listar Tarefas por StatusProjeto
- 05Função: Imprimir Resumo das TarefasProjeto
- 06Juntando TudoProjeto
Enums
6 lições638- 01O que é um Enum Numérico?DesafioQuiz
- 02Usando Enums NuméricosDesafioQuiz
- 03O que é um Enum de String?DesafioQuiz
- 04Usando Enums de StringDesafioQuiz
- 05Enums HeterogêneosDesafioQuiz
- 06Recapitulação: Usando EnumsDesafio
Generics: Uma Primeira Olhada
6 lições537- 01O Problema que Generics ResolvemQuiz
- 02Criando uma Função de Identidade GenéricaDesafioQuiz
- 03Usando uma Função GenéricaDesafioQuiz
- 04Arrays GenéricosDesafioQuiz
- 05Interfaces GenéricasDesafioQuiz
- 06Recapitulação: Prática de Funções GenéricasDesafio
Projeto: Gerenciamento de Inventário
Projeto5 lições18- 01Projeto: Item de Inventário GenéricoDesafioQuiz
- 02Função: Adicionar Itens ao InventárioProjeto
- 03Função para Buscar um Item por IDProjeto
- 04Criar Tipo de Inventário EspecíficoProjeto
- 05Função para Obter Detalhes do ItemProjeto
Tópicos Avançados
6 lições642- 01Asserções de TipoDesafioQuiz
- 02Type Guards: in & instanceofDesafioQuiz
- 03O Tipo 'never'DesafioQuiz
- 04Tipos Anuláveis ('strictNull')DesafioQuiz
- 05Assinaturas de Índice para ObjetosDesafioQuiz
- 06Recapitulação: Refinando TiposDesafio
Seção 4
Programação Orientada a Objetos
Começar seçãoIniciarExpandirRecolherDescubra como organizar o código com classes, objetos e estruturas reutilizáveisObjetos e a Palavra-chave this
6 lições642- 01Revisão Rápida: ObjetosDesafioQuiz
- 02Adicionando Métodos a ObjetosDesafioQuiz
- 03Entendendo a Palavra-chave thisDesafioQuiz
- 04Funções ConstrutorasDesafioQuiz
- 05A Palavra-chave newDesafioQuiz
- 06Desafio de RecapitulaçãoDesafio
Organizando o Código
4 lições434- 01O que são Módulos?DesafioQuiz
- 02Exportando com exportDesafioQuiz
- 03Importando com importDesafioQuiz
- 04Exportações Default vs. NomeadasDesafioQuiz
Classes e Objetos
4 lições426- 01O que é uma Classe?DesafioQuiz
- 02Criando InstânciasDesafioQuiz
- 03Propriedades e MétodosDesafioQuiz
- 04Desafio de RevisãoDesafio
Métodos e Gerenciamento de Estado
2 lições218- 01Métodos que modificam o estadoDesafioQuiz
- 02Padrão de encadeamento de métodosDesafioQuiz
Encapsulamento e Acesso
4 lições426- 01EncapsulamentoDesafioQuiz
- 02Campos de Classe Públicos e PrivadosDesafioQuiz
- 03Métodos PrivadosDesafioQuiz
- 04Desafio de RecapitulaçãoDesafio
Projeto: Uma Conta Bancária Simples
Projeto3 lições1- 01Classe BankAccountDesafio
- 02Depósitos e SaquesProjeto
- 03Saldo como Campo PrivadoProjeto
Herança e a palavra-chave extends
6 lições645- 01HerançaDesafioQuiz
- 02A relação "é um"DesafioQuiz
- 03A palavra-chave extendsDesafioQuiz
- 04O método super()DesafioQuiz
- 05Herdando propriedades e métodosDesafioQuiz
- 06Desafio de recapitulaçãoDesafio
Organizando Código POO
1 lição19- 01Organizar Classes em MódulosDesafioQuiz
Métodos e Propriedades Estáticos
4 lições425- 01Nível de Classe vs. Nível de InstânciaDesafioQuiz
- 02Propriedades EstáticasDesafioQuiz
- 03Métodos Utilitários EstáticosDesafioQuiz
- 04Desafio de RecapitulaçãoDesafio
Polimorfismo
4 lições425- 01O que é Polimorfismo?DesafioQuiz
- 02Sobrescrevendo Métodos HerdadosDesafioQuiz
- 03Usando superDesafioQuiz
- 04Desafio de RecapitulaçãoDesafio
Projeto: Um Renderizador de Formas
Projeto4 lições1- 01Configuração: Classe Shape e ExportaçãoDesafio
- 02Herança da Classe CircleProjeto
- 03Sobrescrita e Método AreaProjeto
- 04Contador de Formas EstáticoProjeto
Getters e Setters
4 lições426- 01As Palavras-chave get e setDesafioQuiz
- 02Propriedades ComputadasDesafioQuiz
- 03Validação e Efeitos ColateraisDesafioQuiz
- 04Desafio de RevisãoDesafio
Composição vs. Herança
3 lições328- 01A relação "tem um" vs. "é um"DesafioQuiz
- 02Os limites da herança profundaDesafioQuiz
- 03Construindo objetosDesafioQuiz
Sistema de Gerenciamento de Biblioteca
Projeto3 lições1- 01Projetando a BibliotecaDesafio
- 02Classe Livro com ComposiçãoProjeto
- 03Validação do Autor do LivroProjeto
Desafios Finais
4 lições4- 01Construtor de Personagens de JogoDesafio
- 02Sistema de Produtos de E-commerceDesafio
- 03Sistema de Gestão UniversitáriaDesafio
- 04Sistema de Dispositivos de Casa InteligenteDesafio
Por que aprender JavaScript com a Coddy
- Rode JavaScript na hora, direto no navegador. Sem instalar Node.js, sem configurar IDE. O editor e a saída ficam lado a lado, então o ciclo de feedback do JavaScript é curto.
- JavaScript moderno: sintaxe ES6+, arrow functions, promises, async/await, destructuring, módulos — o JavaScript que você escreveria no trabalho, sem padrões ultrapassados.
- As dicas de IA ajudam você a depurar um exercício sem entregar a solução, para você construir o modelo mental que torna mais fácil escrever JS no futuro.
- Certificado grátis de conclusão para compartilhar no LinkedIn ou adicionar ao currículo como prova de que você completou um curso interativo de JavaScript.
Perguntas frequentes sobre aprender JavaScript
JavaScript é fácil de aprender?
JavaScript é uma das linguagens de programação mais fáceis para começar. A sintaxe é tolerante, você pode rodar código direto no navegador, e a interatividade básica (cliques em botões, alerts) já dá um retorno visual imediato. As partes mais complicadas — código assíncrono, closures, this-binding — vêm depois, e o curso apresenta tudo aos poucos com exemplos práticos.
Quanto tempo leva para aprender JavaScript?
Os fundamentos de JavaScript geralmente podem ser aprendidos em uma ou duas semanas de prática diária. Para criar projetos reais com segurança, reserve de um a três meses, dependendo do seu ritmo.
Devo aprender HTML e CSS antes de JavaScript?
Ajuda bastante. JavaScript fica muito mais concreto quando você consegue alterar uma página de verdade — esconder um elemento, atualizar um texto, reagir a um clique. Os cursos de HTML e CSS são curtos e se conectam direto com as aulas de JavaScript que mexem com o DOM, mas você também pode começar pela lógica pura de JavaScript.
Posso aprender JavaScript online de graça?
Sim. O curso interativo de JavaScript é gratuito — aulas completas, exercícios de código, quizzes e um certificado. O editor roda no seu navegador, então você não precisa instalar Node.js nem qualquer outra ferramenta para começar a escrever JS.
Qual é a diferença entre JavaScript e Java?
Apesar do nome, são linguagens sem relação entre si. Java é uma linguagem estaticamente tipada e baseada em classes, muito usada em servidores e no Android. JavaScript é dinamicamente tipada e roda nos navegadores e no Node.js. Para a web, aprenda JavaScript; para Android ou back-ends corporativos de grande porte, aprenda Java.
Recebo um certificado ao concluir o curso de JavaScript?
Sim. Ao concluir o curso de JavaScript, você recebe um certificado de conclusão gratuito que pode compartilhar no LinkedIn ou incluir no seu currículo. Um sinal verificável de que você passou por um curso estruturado e interativo, e não só assistiu a tutoriais.