JS Moderno (ES6+): O Essencial
Pare de escrever código legado. Domine Arrow Functions, Async/Await e Destructuring que todo dev sênior usa hoje.
Seções9
🔤 Variáveis e Tipos
15 snippetsFundamentos da linguagem para declaração de armazenamento e verificação de tipos de dados.
Declaração de Constante
Declara uma constante imutável com valor "João". Não pode ser reatribuída após a declaração e deve ser inicializada no mesmo momento.
const nome = "João"Declaração de Variável (Escopo de Bloco)
Declara uma variável com escopo de bloco (scope). Pode ser reatribuída e seu valor pode ser alterado durante a execução do programa.
let idade = 25Declaração Antiga (Escopo de Função)
Declara uma variável com escopo de função. Devido a comportamentos inesperados de hoisting, é geralmente recomendado evitar seu uso em favor de `let` ou `const`.
var antigo = "evitar"Verificação de Tipo de Dado
Retorna uma string indicando o tipo de dado do operando. Para strings, retorna "string".
typeof "texto"Verificação de Tipo Numérico
Retorna a string "number", indicando que o operando é um número inteiro ou de ponto flutuante.
typeof 42Verificação de Tipo Booleano
Retorna a string "boolean", indicando um valor verdadeiro (truthy) ou falso (falsy).
typeof trueVerificação de Null (Bug Histórico)
Retorna a string "object". Este é um bug histórico na especificação da linguagem JavaScript que persiste para compatibilidade.
typeof nullVerificação de Undefined
Retorna a string "undefined", indicando que uma variável foi declarada mas não recebeu valor.
typeof undefinedVerificação de Tipo Symbol
Retorna a string "symbol". Cria um identificador único e imutável, frequentemente usado para propriedades de objeto.
typeof Symbol()Verificação de Tipo BigInt
Retorna a string "bigint". Permite representar números inteiros de precisão arbitrária.
typeof 42nConversão para Número
Converte uma string contendo um número para o tipo primitivo number (Float). Se falhar, retorna NaN.
Number("123")Conversão para String
Converte qualquer valor para o tipo primitivo string.
String(123)Conversão para Booleano
Converte um valor para o tipo primitivo booleano. Valores truthy (como 1) tornam-se true.
Boolean(1)Parsing Inteiro (Ponto Flutuante)
Lê a string e retorna o primeiro inteiro encontrado até o primeiro caractere não numérico.
parseInt("42px")Parsing Float (Decimal)
Lê a string e retorna o primeiro número decimal encontrado até o final da string.
parseFloat("3.14")📋 Arrays e Métodos
18 snippetsOperações essenciais para manipulação de listas de dados, incluindo criação, mutação e iteração.
Declaração de Array Literal
Cria uma nova instância de array com os elementos fornecidos como argumentos.
const arr = [1, 2, 3]Declaração via Construtor
Cria um novo array usando a função construtora. Funciona de forma similar ao literal.
const arr = new Array(1, 2, 3)Declaração Estática
Cria um novo array com elementos passados como argumentos, mesmo se houver apenas um argumento numérico.
const arr = Array.of(1, 2, 3)Array Preenchido com Valor
Cria um array com tamanho 5 e preenche todas as posições com o valor 0.
const arr = Array(5).fill(0)Adicionar no Final
Adiciona um ou mais elementos ao final do array e retorna o novo tamanho do array.
arr.push(4)Remover do Final
Remove o último elemento de um array e retorna esse elemento.
arr.pop()Adicionar no Início
Adiciona um ou mais elementos no início do array e retorna o novo tamanho.
arr.unshift(0)Remover do Início
Remove o primeiro elemento de um array e retorna esse elemento.
arr.shift()Fatia de Array (Cópia)
Retorna uma cópia de uma parte de um array para um novo array, sem modificar o original. O índice final é exclusivo.
arr.slice(1, 3)Inserir/Remover (Mutação)
Alterar o conteúdo de um array adicionando novos elementos, removendo elementos existentes, ou ambos, sem criar um novo array.
arr.splice(1, 2)Iteração com Callback
Executa uma função fornecida uma vez para cada elemento do array.
arr.forEach(item => console.log(item))Mapeamento (Transformação)
Cria um novo array preenchido com os resultados da chamada de uma função fornecida em cada elemento.
arr.map(item => item * 2)Filtragem
Cria um novo array com todos os elementos que passam no teste implementado pela função fornecida.
arr.filter(item => item > 2)Redução (Reduce)
Executa uma função de redução em cada elemento do array, resultando em um único valor de retorno.
arr.reduce((acc, item) => acc + item, 0)Encontrar Primeiro
Retorna o valor do primeiro elemento no array que satisfaz a função de teste fornecida.
arr.find(item => item > 2)Encontrar Índice
Retorna o índice do primeiro elemento no array que satisfaz a função de teste fornecida.
arr.findIndex(item => item > 2)Algum Elemento Satisfaz
Retorna true se pelo menos um elemento no array satisfizer a condição da função de teste passada.
arr.some(item => item > 2)Todos Elementos Satisfazem
Retorna true se todos os elementos no array satisfizerem a condição da função de teste passada.
arr.every(item => item > 0)🏗️ Objetos e Propriedades
18 snippetsManipulação de estruturas de dados chave-valor, incluindo propriedades dinâmicas e métodos utilitários.
Declaração de Objeto Literal
Cria um novo objeto contendo pares de chave-valor.
const obj = { nome: "João", idade: 25 }Declaração via Construtor
Cria um novo objeto usando a função construtora global Object.
const obj = new Object()Objeto Sem Protótipo
Cria um novo objeto com null como protótipo (não herdará propriedades de Object.prototype).
const obj = Object.create(null)Acesso via Ponto
Acessa a propriedade "nome" do objeto obj.
obj.nomeAcesso via Colchetes
Acessa a propriedade "nome" do objeto obj usando uma string como chave.
obj["nome"]Acesso via Variável
Acessa uma propriedade onde o nome da chave é armazenado em uma variável.
obj.chaveDinamicaRemover Propriedade
Remove uma propriedade de um objeto e retorna true se a propriedade existia e foi removida.
delete obj.idadeObter Chaves
Retorna um array contendo as propriedades enumeráveis próprias de um objeto, na mesma ordem em que um loop for...in percorre.
Object.keys(obj)Obter Valores
Retorna um array contendo todos os valores das propriedades próprias enumeráveis de um objeto.
Object.values(obj)Obter Entradas (Chave e Valor)
Retorna um array de pares [chave, valor] para cada propriedade enumerável própria de um objeto.
Object.entries(obj)Mesclar Objetos
Copia todas as propriedades enumeráveis de um ou mais objetos de origem para um objeto de destino.
Object.assign({}, obj1, obj2)Spread Operator (Objeto)
Permite que um objeto seja expandido em um conjunto de argumentos.
{ ...obj1, ...obj2 }Congelar Objeto
Impede que novos propriedades sejam adicionadas, existentes sejam removidas ou que as propriedades existentes possam ser alteradas.
Object.freeze(obj)Sela Objeto
Impede a adição de novas propriedades e a remoção de propriedades existentes, mas permite a modificação de valores de propriedades existentes.
Object.seal(obj)Propriedade Computada
Permite definir o nome da propriedade dinamicamente usando uma expressão.
const obj = { [chave]: "valor" }Método Shorthand
Permite omitir a palavra-chave "function" e a palavra-chave "function" no retorno ao definir um método dentro de um objeto.
metodo() { return "oi" }Getter
Define um método que retorna automaticamente uma propriedade quando ela é acessada.
get prop() { return this._prop }Setter
Define um método que recebe um valor quando a propriedade é definida, permitindo manipulação de dados antes da atribuição.
set prop(val) { this._prop = val }⚡ Funções Modernas
9 snippetsTécnicas avançadas de declaração de funções, incluindo arrow functions, currying e manipulação de parâmetros.
Function Declaration
Declara uma função nomeada que pode ser chamada pelo nome. É "hoisted" (elevada) no escopo global.
function soma(a, b) { return a + b }Function Expression
Define uma função e a atribui a uma variável. Não é "hoisted" e só fica disponível após a linha de declaração.
const soma = function(a, b) { return a + b }Arrow Function
Define uma função anônima com sintaxe mais curta. Não possui seu próprio `this`, `arguments`, `super` ou `new.target`.
const soma = (a, b) => a + bReturn de Objeto com Arrow
Usa parênteses ao redor da seta para retornar um objeto literal, pois as chaves {} são interpretadas como o corpo da função.
const soma = (a, b) => ({ resultado: a + b })Rest Parameters
Permite representar uma quantidade indefinida de argumentos como um array.
function soma(...numeros) { return numeros.reduce((a, b) => a + b, 0) }Spread Operator (Args)
Expande um array em uma lista de argumentos individuais para ser passado para uma função.
soma(...nums)Parâmetro Padrão
Define um valor padrão para um parâmetro de função que será usado se o argumento não for fornecido.
function saudar(nome = "Visitante") { return `Olá, ${nome}!` }Currying
Transforma uma função que aceita múltiplos argumentos em uma série de funções que aceitam um único argumento.
const multiplicar = fator => num => num * fatorFunção de Ordem Superior
Função que recebe outra função como argumento ou retorna uma função.
const aplicar = (fn, valor) => fn(valor)⏱️ Programação Assíncrona
10 snippetsGerenciamento de operações não bloqueantes, Promises, Async/Await e Fetch API.
Promise Constructor
Cria uma Promise que será resolvida ou rejeitada em algum momento no futuro.
const promise = new Promise((resolve, reject) => { setTimeout(() => resolve("Sucesso!"), 1000) })Tratamento de Sucesso
Registra uma função de callback a ser executada quando a Promise for resolvida com um valor.
promise.then(result => console.log(result))Tratamento de Erro
Registra uma função de callback a ser executada quando a Promise for rejeitada com um motivo.
promise.catch(error => console.error(error))Bloco Finally
Registra uma função de callback a ser executada quando a Promise for concluída (seja resolvida ou rejeitada).
promise.finally(() => console.log("Finalizado"))Função Assíncrona
Declara uma função que pode conter expressões await que pausam a execução até que a Promise seja resolvida.
async function buscarDados() { try { const response = await fetch("/api/dados") ... } }Promise.all
Retorna uma Promise que é resolvida quando todas as promises no iterável forem resolvidas.
Promise.all([p1, p2, p3])Promise.race
Retorna uma Promise que resolve ou rejeita assim que uma das promises no iterável resolver ou rejeitar.
Promise.race([p1, p2])Promise.allSettled
Retorna uma Promise que resolve quando todas as promises fornecidas são concluídas (seja resolvidas ou rejeitadas).
Promise.allSettled([p1, p2])Promise.any
Retorna uma Promise que resolve assim que uma das promises no iterável resolver.
Promise.any([p1, p2])Fetch API
Interface da Web para iniciar requisições HTTP assíncronas.
fetch('/api/users').then(res => res.json())🎯 Destructuring & Spread
14 snippetsSintaxe elegante para extrair valores de arrays e objetos, e para espalhar elementos.
Array Destructuring
Extrai valores de arrays e atribui a variáveis correspondentes.
const [a, b, c] = [1, 2, 3]Array Destructuring com Resto
Captura o primeiro valor em uma variável e o restante em um novo array.
const [primeiro, ...resto] = [1, 2, 3, 4]Array Destructuring Ignorando
Ignora valores desejados na posição inicial da desestruturação.
const [, , terceiro] = [1, 2, 3]Valor Padrão
Define um valor padrão para uma variável se o valor correspondente no array for undefined.
const [x = 0] = []Object Destructuring
Extrai propriedades de objetos e atribui a variáveis com nomes iguais ou diferentes.
const { nome, idade } = { nome: "João", idade: 25 }Renomeando Propriedade
Permite que a variável de destino tenha um nome diferente da propriedade do objeto.
const { nome: userName, idade: age } = objValor Padrão em Objeto
Define um valor padrão para uma propriedade se o objeto não tiver a propriedade ou o valor for undefined.
const { nome = "Anônimo" } = {}Rest Operator em Objeto
Captura todas as propriedades restantes do objeto em uma nova variável.
const { nome, ...resto } = objDestructuring Aninhado
Permite extrair valores de objetos dentro de outros objetos.
const { usuario: { nome } } = dataSpread Operator Array
Permite criar uma cópia de um array ou adicionar novos elementos.
const arr2 = [...arr1, 3, 4]Spread Operator Objeto
Cria uma cópia de um objeto e permite sobrescrever propriedades.
const obj2 = { ...obj1, c: 3 }Cópia Rasa (Shallow Copy)
Cria uma nova instância de objeto com propriedades idênticas.
const copia = { ...original }Merge de Objetos
Cria um novo objeto com propriedades de ambos, onde as propriedades de obj2 sobrescrevem as de obj1.
const merged = { ...obj1, ...obj2 }Destructuring em Parâmetros
Permite extrair propriedades diretamente dos argumentos da função.
function processar({ nome, idade }) { ... }🚀 ES6+ Features
11 snippetsRecursos do ECMAScript 2015 e versões posteriores, incluindo templates, módulos e classes.
Template Literals
Permite strings multi-linha e interpolação de expressões usando a crase (`) em vez de aspas.
const mensagem = `Olá, ${nome}!`Template Multilinha
Permite criar strings que abrangem múltiplas linhas sem precisar de caracteres de escape de nova linha.
const multiline = `Linha 1
Linha 2`Named Export
Exporta uma função específica para ser importada por nome em outro módulo.
const soma = (a, b) => a + bDefault Export
Exporta uma função padrão para um módulo, que pode ser importada com qualquer nome.
export default function() {}Named Import
Importa uma função específica exportada por nome de um módulo.
import { soma } from './utils.js'Default Import
Importa o valor padrão exportado de um módulo.
import utils from './utils.js'Namespace Import
Importa todo o conteúdo de um módulo como um único objeto com propriedades.
import * as utils from './utils.js'Definição de Classe
Define uma classe para criar objetos com propriedades e métodos.
class Pessoa { constructor(nome) { this.nome = nome } }Herança de Classe
Permite criar uma nova classe que herda propriedades e métodos de uma classe pai.
class Funcionario extends Pessoa { constructor(nome, cargo) { super(nome); ... } }Symbol Único
Cria um valor primitivo simbólico e único, que geralmente serve como chave de propriedade.
const id = Symbol('id')Iterator (For...of)
Permite iterar sobre dados que implementam o protocolo iterador.
for (const val of obj) console.log(val)🌐 Manipulação DOM
20 snippetsInteragir com a estrutura de documentos HTML e CSS.
Selecionar por ID
Retorna o elemento que corresponde ao ID fornecido na página.
document.getElementById('meu-id')Selecionar por Seletor CSS
Retorna o primeiro elemento dentro do documento que corresponde ao seletor CSS especificado.
document.querySelector('.classe')Selecionar Todos
Retorna uma NodeList estática com todos os elementos que correspondem ao seletor CSS.
document.querySelectorAll('div')Selecionar por Classe
Retorna uma HTMLCollection de elementos com a classe fornecida.
document.getElementsByClassName('classe')Selecionar por Tag
Retorna uma HTMLCollection de elementos com a tag fornecida.
document.getElementsByTagName('p')Definir Texto Seguro
Define o texto contido no nó. Escapa caracteres HTML para evitar injeção de script.
element.textContent = "Texto"Definir HTML
Define o HTML interno do elemento. Não escapa caracteres, permitindo HTML válido.
element.innerHTML = "<strong>HTML</strong>"Definir Valor de Input
Define o valor de um elemento de formulário (input, select, textarea).
element.value = "valor"Obter Atributo
Retorna o valor de um atributo HTML especificado.
element.getAttribute('data-id')Definir Atributo
Define o valor de um atributo HTML especificado.
element.setAttribute('data-id', '123')Definir Estilo Inline
Define o estilo CSS diretamente no elemento como propriedade de estilo.
element.style.color = 'red'Adicionar Classe
Adiciona uma ou mais classes CSS ao elemento especificado.
element.classList.add('ativa')Remover Classe
Remove uma ou mais classes CSS do elemento especificado.
element.classList.remove('ativa')Alternar Classe
Adiciona a classe se não existir, ou remove se existir.
element.classList.toggle('ativa')Verificar Classe
Retorna true se o elemento possuir a classe especificada.
element.classList.contains('ativa')Criar Elemento
Cria um novo elemento HTML com a tag especificada.
const div = document.createElement('div')Adicionar ao DOM
Adiciona um nó como o último filho do elemento pai.
document.body.appendChild(div)Remover Elemento
Remove o elemento do DOM.
element.remove()Adicionar Evento
Registra uma função de callback a ser executada sempre que o evento ocorrer.
element.addEventListener('click', (e) => { ... })Remover Evento
Remove um listener de evento registrado anteriormente.
element.removeEventListener('click', handler)🐛 Debugging & Ferramentas
13 snippetsTécnicas e métodos de console para diagnóstico e análise de performance.
Log Básico
Registra uma mensagem no console de depuração.
console.log('mensagem')Log de Erro
Registra uma mensagem de erro no console com ícone vermelho.
console.error('erro')Log de Aviso
Registra um aviso de advertência no console com ícone amarelo.
console.warn('aviso')Log de Informação
Registra uma mensagem informativa no console com ícone azul.
console.info('info')Tabela de Dados
Exibe uma tabela tabular de dados no console para visualização fácil.
console.table([{a:1}, {a:2}])Agrupar Logs
Inicia um grupo de logs no console para organização visual.
console.group('grupo')Fechar Grupo
Encerra o grupo de logs iniciado anteriormente.
console.groupEnd()Iniciar Timer
Inicia um temporizador no console. O tempo decorrido é calculado desde a chamada até `timeEnd`.
console.time('timer')Finalizar Timer
Para o temporizador e imprime o tempo decorrido no console.
console.timeEnd('timer')Ponto de Parada
Pausa a execução do script e abre as ferramentas de desenvolvedor do navegador.
function debugar() { debugger }Timestamp Preciso
Retorna um valor de timestamp de alta precisão (em milissegundos) desde a época.
performance.now()Marca de Performance
Cria uma marca de tempo de alto nível no timeline de performance.
performance.mark('start')Medir Performance
Cria uma medição entre duas marcas de tempo.
performance.measure('diff', 'start', 'end')Cheatsheets relacionados
p { color: blue; }CSS3: O Guia Visual
Nunca mais chute valores de display ou position. Domine Flexbox, Grid e layouts responsivos visualmente em segundos.
<!DOCTYPE html>HTML5: Tags Semânticas & SEO
O Google odeia <div>. Use a estrutura semântica correta para colocar seu site no topo das buscas sem gastar com anúncios.