O que é JavaScript & Ecossistema Moderno
Compreenda a história do JavaScript, a especificação ECMAScript, a evolução dos motores V8/SpiderMonkey e o ecossistema moderno.
Da Lógica Essencial e ES6+ a Programação Assíncrona, DOM e APIs Modernas
Compreenda a história do JavaScript, a especificação ECMAScript, a evolução dos motores V8/SpiderMonkey e o ecossistema moderno.
Aprenda onde e como incluir scripts no HTML, a diferença crítica entre async e defer para performance e boas práticas.
Domine a declaração moderna de variáveis: por que var é obsoleto, escopo de bloco com let e imutabilidade de referência com const.
Explore os tipos primitivos (string, number, boolean, null, undefined, symbol, bigint), tipagem dinâmica e o operador typeof.
Utilize operadores matemáticos (+, -, *, /, %, **), operadores de atribuição composta e a tabela de precedência de operadores.
Evite bugs sutis entendendo a coerção de tipos (type coercion) e a diferença entre igualdade solta (==) e igualdade estrita (===).
Domine valores Truthy e Falsy, operadores lógicos (&&, ||, !), avaliação em curto-circuito e valores padrão com coalescência.
Controle o fluxo da aplicação com if, else if, else aninhados e escreva expressões condicionais limpas com o operador ternário.
Trate múltiplos caminhos de execução com a estrutura switch case, cláusulas break para evitar fall-through e bloco default.
Automatize tarefas repetitivas dominando laços de repetição: while (pré-teste), do...while (pós-teste) e o for tradicional.
Aprenda function declaration, function expression, parâmetros formais, argumentos e retorno explícito com return.
Escreva funções modernas com Arrow Functions (=>), retorno implícito e entenda a amarração léxica do valor de this.
Configure valores padrão para parâmetros e capture quantidades variáveis de argumentos com o operador Rest (...args).
Entenda como o JavaScript resolve variáveis através do escopo global, escopo de função, escopo de bloco e a Scope Chain.
Desmistifique o içamento (hoisting): como declarações sobem na memória e o que é a Zona Morta Temporal (TDZ) com let/const.
Domine Closures: entenda como funções retêm acesso ao seu escopo léxico pai mesmo após a execução e crie dados privados.
Crie e manipule listas ordenadas (Arrays), acesse elementos por índice zero-based e controle o tamanho dinâmico com length.
Altere arrays com métodos de mutação: adicione e remova itens no início (unshift/shift), fim (push/pop) e meio (splice).
Realize buscas e cópias seguras com métodos imutáveis: slice para fatiamento, concat para união, indexOf e includes.
Percorra listas com elegância: utilize o loop moderno for...of para iteráveis e o método forEach com função de callback.
Transforme cada elemento de um array gerando uma nova lista imutável com a função de alta ordem (HOF) map.
Filtre coleções de dados com base em predicados booleanos sem modificar o array original através do método filter.
Agregue, some e reduza coleções complexas a um único valor final (ou objeto) dominando o acumulador do reduce.
Localize elementos específicos com find/findIndex e teste condições lógicas em listas com os métodos some e every.
Modele entidades do mundo real com Objetos: propriedades chave-valor, métodos internos, notação ponto e colchetes.
Extraia valores de arrays e propriedades de objetos diretamente em variáveis com a sintaxe elegante de Destructuring.
Clone objetos e arrays sem mutação e combine múltiplas estruturas de dados utilizando o poderoso operador Spread (...).
Compreenda a notação JSON, serialize objetos para texto com JSON.stringify e faça o parse de dados com JSON.parse.
Utilize coleções modernas do ES6: Map para dicionários de chaves arbitrárias e Set para conjuntos de valores únicos.
Crie código defensivo e resiliente interceptando exceções com blocos try, catch, finally e lançando erros com throw new Error.
Entenda o Document Object Model (DOM), a hierarquia da árvore de nós (Node Tree) e a ponte entre HTML e JavaScript.
Selecione elementos na página com precisão cirúrgica usando seletores CSS modernos com querySelector e querySelectorAll.
Altere conteúdo textual e HTML: conheça as diferenças entre textContent, innerText e evite ataques XSS com innerHTML.
Gerencie classes CSS dinamicamente com classList (add, remove, toggle, contains) e manipule dados customizados com dataset.
Construa interfaces dinâmicas criando nós com createElement, inserindo com append/appendChild e removendo com remove.
Torne páginas interativas escutando eventos de mouse, teclado e formulário com addEventListener e o objeto Event.
Domine as fases de Event Bubbling e Capturing, utilize stopPropagation e aumente a performance com Event Delegation.
Valide formulários no client-side: escute eventos input/change e controle o envio padrão da página com preventDefault.
Persista dados no navegador do usuário mesmo após fechar a aba ou janela com as APIs localStorage e sessionStorage.
Agende execuções futuras com setTimeout e crie loops temporizados com setInterval, cancelando-os com clearTimeout.
Compreenda como o JavaScript single-threaded gerencia concorrência: a Call Stack, Web APIs, Task Queue e Microtask Queue.
Entenda o padrão de funções de retorno (callbacks) para operações assíncronas e os problemas clássicos do Callback Hell.
Trabalhe com Promises: crie promessas, compreenda os estados (Pending, Fulfilled, Rejected) e encadeie then e catch.
Escreva código assíncrono com aparência síncrona e tratamento elegante de erros usando as palavras-chave async e await.
Consuma dados de servidores remotos e APIs RESTful usando a Fetch API nativa com métodos GET, POST e headers HTTP.
Dispare requisições em paralelo e trate múltiplos resultados com Promise.all, Promise.allSettled, Promise.race e any.
Compreenda a alma do JavaScript: a propriedade prototype, a cadeia de protótipos (__proto__) e a herança prototípica.
Utilize a sintaxe moderna de Classes do ES6: métodos construtores, getters, setters, herança com extends e chamada super.
Modularize aplicações dividindo o código em múltiplos arquivos com export, export default e import nativo no navegador.
Projeto Mestre: construa uma aplicação completa de ponta a ponta (CRUD) com consumo de API externa, DOM e persistência.