JS Moderno (ES6+): Lo Esencial
Deja de escribir código legado. Domina Arrow Functions, Async/Await y Destructuring que todo dev senior usa hoy.
Secciones9
🔤 Variables y Tipos
15 snippetsFundamentos del lenguaje para declaración de almacenamiento y verificación de tipos de datos.
Declaración de Constante
Declara una constante inmutable con valor "João". No puede ser reasignada después de la declaración y debe ser inicializada en el mismo momento.
const nome = "João"Declaración de Variable (Ámbito de Bloque)
Declara una variable con ámbito de bloque (scope). Puede ser reasignada y su valor puede ser cambiado durante la ejecución del programa.
let idade = 25Declaración Antigua (Ámbito de Función)
Declara una variable con ámbito de función. Debido a comportamientos inesperados de hoisting, generalmente se recomienda evitar su uso en favor de `let` o `const`.
var antigo = "evitar"Verificación de Tipo de Dato
Devuelve una cadena indicando el tipo de dato del operando. Para strings, devuelve "string".
typeof "texto"Verificación de Tipo Numérico
Devuelve la cadena "number", indicando que el operando es un número entero o de punto flotante.
typeof 42Verificación de Tipo Booleano
Devuelve la string "boolean", indicando un valor verdadero (truthy) o falso (falsy).
typeof trueVerificación de Null (Bug Histórico)
Devuelve la string "object". Este es un bug histórico en la especificación del lenguaje JavaScript que persiste por compatibilidad.
typeof nullVerificación de Undefined
Devuelve la string "undefined", indicando que una variable fue declarada pero no recibió valor.
typeof undefinedVerificación de Tipo Symbol
Devuelve la string "symbol". Crea un identificador único e inmutable, frecuentemente usado para propiedades de objeto.
typeof Symbol()Verificación de Tipo BigInt
Devuelve la string "bigint". Permite representar números enteros de precisión arbitraria.
typeof 42nConversión a Número
Convierte una string que contiene un número al tipo primitivo number (Float). Si falla, devuelve NaN.
Number("123")Conversión a String
Convierte cualquier valor al tipo primitivo string.
String(123)Conversión a Booleano
Convierte un valor al tipo primitivo booleano. Valores truthy (como 1) se convierten en true.
Boolean(1)Parseo de Entero (Punto Flotante)
Lee la cadena y devuelve el primer entero encontrado hasta el primer carácter no numérico.
parseInt("42px")Parseo de Float (Decimal)
Lee la cadena y devuelve el primer número decimal encontrado hasta el final de la cadena.
parseFloat("3.14")📋 Arrays y Métodos
18 snippetsOperaciones esenciales para manipulación de listas de datos, incluyendo creación, mutación e iteración.
Declaración de Array Literal
Crea una nueva instancia de array con los elementos proporcionados como argumentos.
const arr = [1, 2, 3]Declaración vía Constructor
Crea un nuevo array usando la función constructora. Funciona de forma similar al literal.
const arr = new Array(1, 2, 3)Declaración Estática
Crea un nuevo array con elementos pasados como argumentos, incluso si hay solo un argumento numérico.
const arr = Array.of(1, 2, 3)Array Rellenado con Valor
Crea un array con tamaño 5 y rellena todas las posiciones con el valor 0.
const arr = Array(5).fill(0)Añadir al Final
Añade uno o más elementos al final del array y devuelve el nuevo tamaño del array.
arr.push(4)Remover del Final
Elimina el último elemento de un array y devuelve ese elemento.
arr.pop()Añadir al Inicio
Añade uno o más elementos al inicio del array y devuelve el nuevo tamaño.
arr.unshift(0)Eliminar del Inicio
Elimina el primer elemento de un array y devuelve ese elemento.
arr.shift()Segmento de Array (Copia)
Devuelve una copia de una parte de un array a un nuevo array, sin modificar el original. El índice final es exclusivo.
arr.slice(1, 3)Insertar/Remover (Mutación)
Alterar el contenido de un array añadiendo nuevos elementos, eliminando elementos existentes, o ambos, sin crear un nuevo array.
arr.splice(1, 2)Iteración con Callback
Ejecuta una función proporcionada una vez para cada elemento del array.
arr.forEach(item => console.log(item))Mapeo (Transformación)
Crea un nuevo array rellenado con los resultados de la llamada a una función proporcionada en cada elemento.
arr.map(item => item * 2)Filtrado
Crea un nuevo array con todos los elementos que pasan la prueba implementada por la función proporcionada.
arr.filter(item => item > 2)Reducción (Reduce)
Ejecuta una función de reducción en cada elemento del array, resultando en un único valor de retorno.
arr.reduce((acc, item) => acc + item, 0)Encontrar Primero
Devuelve el valor del primer elemento en el array que satisface la función de prueba proporcionada.
arr.find(item => item > 2)Encontrar Índice
Devuelve el índice del primer elemento en el array que satisface la función de prueba proporcionada.
arr.findIndex(item => item > 2)Algún Elemento Satisface
Devuelve true si al menos un elemento en el array satisface la condición de la función de prueba pasada.
arr.some(item => item > 2)Todos los Elementos Satisfacen
Devuelve true si todos los elementos en el array satisfacen la condición de la función de prueba pasada.
arr.every(item => item > 0)🏗️ Objetos y Propiedades
18 snippetsManipulación de estructuras de datos clave-valor, incluyendo propiedades dinámicas y métodos utilitarios.
Declaración de Objeto Literal
Crea un nuevo objeto que contiene pares clave-valor.
const obj = { nome: "João", idade: 25 }Declaración vía Constructor
Crea un nuevo objeto usando la función constructora global Object.
const obj = new Object()Objeto Sin Prototipo
Crea un nuevo objeto con null como prototipo (no heredará propiedades de Object.prototype).
const obj = Object.create(null)Acceso vía Punto
Accede a la propiedad "nombre" del objeto obj.
obj.nomeAcceso vía Corchetes
Accede a la propiedad "nombre" del objeto obj usando una cadena como clave.
obj["nome"]Acceso vía Variable
Accede a una propiedad donde el nombre de la clave se almacena en una variable.
obj.chaveDinamicaEliminar Propiedad
Elimina una propiedad de un objeto y devuelve true si la propiedad existía y fue eliminada.
delete obj.idadeObtener Claves
Devuelve un array que contiene las propiedades enumerables propias de un objeto, en el mismo orden en que un bucle for...in las recorre.
Object.keys(obj)Obtener Valores
Devuelve un array que contiene todos los valores de las propiedades propias enumerables de un objeto.
Object.values(obj)Obtener Entradas (Clave y Valor)
Devuelve un array de pares [clave, valor] para cada propiedad enumerable propia de un objeto.
Object.entries(obj)Fusionar Objetos
Copia todas las propiedades enumerables de uno o más objetos de origen a un objeto de destino.
Object.assign({}, obj1, obj2)Spread Operator (Objeto)
Permite que un objeto sea expandido en un conjunto de argumentos.
{ ...obj1, ...obj2 }Congelar Objeto
Impide que se añadan nuevas propiedades, se eliminen las existentes o que las propiedades existentes puedan ser alteradas.
Object.freeze(obj)Sellar Objeto
Impide la adición de nuevas propiedades y la eliminación de propiedades existentes, pero permite la modificación de valores de propiedades existentes.
Object.seal(obj)Propiedad Computada
Permite definir el nombre de la propiedad dinámicamente usando una expresión.
const obj = { [chave]: "valor" }Método Abreviado
Permite omitir la palabra clave "function" y la palabra clave "function" en el retorno al definir un método dentro de un objeto.
metodo() { return "oi" }Getter
Define un método que devuelve automáticamente una propiedad cuando se accede a ella.
get prop() { return this._prop }Setter
Define un método que recibe un valor cuando la propiedad es definida, permitiendo manipulación de datos antes de la asignación.
set prop(val) { this._prop = val }⚡ Funciones Modernas
9 snippetsTécnicas avanzadas de declaración de funciones, incluyendo arrow functions, currying y manipulación de parámetros.
Function Declaration
Declara una función nombrada que puede ser llamada por su nombre. Es "hoisted" (elevada) en el ámbito global.
function soma(a, b) { return a + b }Function Expression
Define una función y la asigna a una variable. No es "hoisted" y solo está disponible después de la línea de declaración.
const soma = function(a, b) { return a + b }Arrow Function
Define una función anónima con sintaxis más corta. No posee su propio `this`, `arguments`, `super` o `new.target`.
const soma = (a, b) => a + bRetorno de Objeto con Arrow
Usa paréntesis alrededor de la flecha para devolver un objeto literal, ya que las llaves {} se interpretan como el cuerpo de la función.
const soma = (a, b) => ({ resultado: a + b })Rest Parameters
Permite representar una cantidad indefinida de argumentos como un array.
function soma(...numeros) { return numeros.reduce((a, b) => a + b, 0) }Spread Operator (Args)
Expande un array en una lista de argumentos individuales para ser pasado a una función.
soma(...nums)Parámetro Predeterminado
Define un valor predeterminado para un parámetro de función que se usará si el argumento no se proporciona.
function saudar(nome = "Visitante") { return `Olá, ${nome}!` }Currying
Transforma una función que acepta múltiples argumentos en una serie de funciones que aceptan un único argumento.
const multiplicar = fator => num => num * fatorFunción de Orden Superior
Función que recibe otra función como argumento o devuelve una función.
const aplicar = (fn, valor) => fn(valor)⏱️ Programación Asíncrona
10 snippetsGestión de operaciones no bloqueantes, Promises, Async/Await y Fetch API.
Promise Constructor
Crea una Promise que será resuelta o rechazada en algún momento en el futuro.
const promise = new Promise((resolve, reject) => { setTimeout(() => resolve("Sucesso!"), 1000) })Tratamiento de Éxito
Registra una función de callback para ser ejecutada cuando la Promise sea resuelta con un valor.
promise.then(result => console.log(result))Tratamiento de Error
Registra una función de callback para ser ejecutada cuando la Promise sea rechazada con un motivo.
promise.catch(error => console.error(error))Bloque Finally
Registra una función de callback a ejecutar cuando la Promise se complete (ya sea resuelta o rechazada).
promise.finally(() => console.log("Finalizado"))Función Asíncrona
Declara una función que puede contener expresiones await que pausan la ejecución hasta que la Promise sea resuelta.
async function buscarDados() { try { const response = await fetch("/api/dados") ... } }Promise.all
Devuelve una Promise que se resuelve cuando todas las promises en el iterable se resuelven.
Promise.all([p1, p2, p3])Promise.race
Devuelve una Promise que se resuelve o rechaza tan pronto como una de las promises en el iterable se resuelva o rechace.
Promise.race([p1, p2])Promise.allSettled
Devuelve una Promise que se resuelve cuando todas las promises proporcionadas se completan (ya sean resueltas o rechazadas).
Promise.allSettled([p1, p2])Promise.any
Devuelve una Promise que se resuelve tan pronto como una de las promises en el iterable se resuelva.
Promise.any([p1, p2])Fetch API
Interfaz Web para iniciar solicitudes HTTP asíncronas.
fetch('/api/users').then(res => res.json())🎯 Destructuring & Spread
14 snippetsSintaxis elegante para extraer valores de arrays y objetos, y para expandir elementos.
Array Destructuring
Extrae valores de arrays y los asigna a variables correspondientes.
const [a, b, c] = [1, 2, 3]Array Destructuring con Resto
Captura el primer valor en una variable y el resto en un nuevo array.
const [primeiro, ...resto] = [1, 2, 3, 4]Array Destructuring Ignorando
Ignora valores deseados en la posición inicial de la desestructuración.
const [, , terceiro] = [1, 2, 3]Valor Predeterminado
Define un valor predeterminado para una variable si el valor correspondiente en el array es undefined.
const [x = 0] = []Object Destructuring
Extrae propiedades de objetos y asigna a variables con nombres iguales o diferentes.
const { nome, idade } = { nome: "João", idade: 25 }Renombrando Propiedad
Permite que la variable de destino tenga un nombre diferente de la propiedad del objeto.
const { nome: userName, idade: age } = objValor Predeterminado en Objeto
Define un valor predeterminado para una propiedad si el objeto no tiene la propiedad o el valor es undefined.
const { nome = "Anônimo" } = {}Rest Operator en Objeto
Captura todas las propiedades restantes del objeto en una nueva variable.
const { nome, ...resto } = objDestructuring Anidado
Permite extraer valores de objetos dentro de otros objetos.
const { usuario: { nome } } = dataSpread Operator Array
Permite crear una copia de un array o añadir nuevos elementos.
const arr2 = [...arr1, 3, 4]Spread Operator Objeto
Crea una copia de un objeto y permite sobrescribir propiedades.
const obj2 = { ...obj1, c: 3 }Copia Superficial (Shallow Copy)
Crea una nueva instancia de objeto con propiedades idénticas.
const copia = { ...original }Fusión de Objetos
Crea un nuevo objeto con propiedades de ambos, donde las propiedades de obj2 sobrescriben las de obj1.
const merged = { ...obj1, ...obj2 }Destructuring en Parámetros
Permite extraer propiedades directamente de los argumentos de la función.
function processar({ nome, idade }) { ... }🚀 ES6+ Features
11 snippetsCaracterísticas de ECMAScript 2015+, incluyendo templates, módulos y clases.
Template Literals
Permite cadenas de texto multilínea e interpolación de expresiones usando la tilde grave (`) en lugar de comillas.
const mensagem = `Olá, ${nome}!`Template Multilínea
Permite crear cadenas de texto que abarcan múltiples líneas sin necesidad de caracteres de escape de nueva línea.
const multiline = `Linha 1
Linha 2`Named Export
Exporta una función específica para ser importada por nombre en otro módulo.
const soma = (a, b) => a + bDefault Export
Exporta una función predeterminada para un módulo, que puede ser importada con cualquier nombre.
export default function() {}Named Import
Importa una función específica exportada por nombre de un módulo.
import { soma } from './utils.js'Default Import
Importa el valor predeterminado exportado de un módulo.
import utils from './utils.js'Namespace Import
Importa todo el contenido de un módulo como un único objeto con propiedades.
import * as utils from './utils.js'Definición de Clase
Define una clase para crear objetos con propiedades y métodos.
class Pessoa { constructor(nome) { this.nome = nome } }Herencia de Clase
Permite crear una nueva clase que hereda propiedades y métodos de una clase padre.
class Funcionario extends Pessoa { constructor(nome, cargo) { super(nome); ... } }Symbol Único
Crea un valor primitivo simbólico y único, que generalmente sirve como clave de propiedad.
const id = Symbol('id')Iterator (For...of)
Permite iterar sobre datos que implementan el protocolo iterador.
for (const val of obj) console.log(val)🌐 Manipulación DOM
20 snippetsInteracción con la estructura de documentos HTML y CSS.
Seleccionar por ID
Devuelve el elemento que corresponde al ID proporcionado en la página.
document.getElementById('meu-id')Seleccionar por Selector CSS
Devuelve el primer elemento dentro del documento que coincide con el selector CSS especificado.
document.querySelector('.classe')Seleccionar Todos
Devuelve una NodeList estática con todos los elementos que coinciden con el selector CSS.
document.querySelectorAll('div')Seleccionar por Clase
Devuelve una HTMLCollection de elementos con la clase proporcionada.
document.getElementsByClassName('classe')Seleccionar por Etiqueta
Devuelve una HTMLCollection de elementos con la etiqueta proporcionada.
document.getElementsByTagName('p')Definir Texto Seguro
Define el texto contenido en el nodo. Escapa caracteres HTML para evitar inyección de script.
element.textContent = "Texto"Definir HTML
Define el HTML interno del elemento. No escapa caracteres, permitiendo HTML válido.
element.innerHTML = "<strong>HTML</strong>"Definir Valor de Input
Define el valor de un elemento de formulario (input, select, textarea).
element.value = "valor"Obtener Atributo
Devuelve el valor de un atributo HTML especificado.
element.getAttribute('data-id')Definir Atributo
Define el valor de un atributo HTML especificado.
element.setAttribute('data-id', '123')Definir Estilo Inline
Define el estilo CSS directamente en el elemento como propiedad de estilo.
element.style.color = 'red'Añadir Clase
Añade una o más clases CSS al elemento especificado.
element.classList.add('ativa')Eliminar Clase
Elimina una o más clases CSS del elemento especificado.
element.classList.remove('ativa')Alternar Clase
Añade la clase si no existe, o la elimina si existe.
element.classList.toggle('ativa')Verificar Clase
Devuelve true si el elemento posee la clase especificada.
element.classList.contains('ativa')Crear Elemento
Crea un nuevo elemento HTML con la etiqueta especificada.
const div = document.createElement('div')Añadir al DOM
Añade un nodo como el último hijo del elemento padre.
document.body.appendChild(div)Eliminar Elemento
Elimina el elemento del DOM.
element.remove()Añadir Evento
Registra una función de callback para ser ejecutada cada vez que ocurra el evento.
element.addEventListener('click', (e) => { ... })Remover Evento
Remueve un listener de evento registrado anteriormente.
element.removeEventListener('click', handler)🐛 Debugging y Herramientas
13 snippetsTécnicas y métodos de consola para diagnóstico y análisis de rendimiento.
Log Básico
Registra un mensaje en la consola de depuración.
console.log('mensagem')Log de Error
Registra un mensaje de error en la consola con un icono rojo.
console.error('erro')Log de Advertencia
Registra una advertencia en la consola con un icono amarillo.
console.warn('aviso')Log de Información
Registra un mensaje informativo en la consola con icono azul.
console.info('info')Tabla de Datos
Muestra una tabla tabular de datos en la consola para una visualización fácil.
console.table([{a:1}, {a:2}])Agrupar Logs
Inicia un grupo de logs en la consola para organización visual.
console.group('grupo')Cerrar Grupo
Cierra el grupo de logs iniciado anteriormente.
console.groupEnd()Iniciar Temporizador
Inicia un temporizador en la consola. El tiempo transcurrido se calcula desde la llamada hasta `timeEnd`.
console.time('timer')Finalizar Temporizador
Detiene el temporizador e imprime el tiempo transcurrido en la consola.
console.timeEnd('timer')Punto de Interrupción
Pausa la ejecución del script y abre las herramientas de desarrollador del navegador.
function debugar() { debugger }Timestamp Preciso
Devuelve un valor de timestamp de alta precisión (en milisegundos) desde la época.
performance.now()Marca de Rendimiento
Crea una marca de tiempo de alto nivel en la línea de tiempo de rendimiento.
performance.mark('start')Medir Rendimiento
Crea una medición entre dos marcas de tiempo.
performance.measure('diff', 'start', 'end')Cheatsheets relacionados
p { color: blue; }CSS3: La Guía Visual
No más adivinanzas con display o position. Domina Flexbox, Grid y layouts responsivos visualmente en segundos.
<!DOCTYPE html>HTML5: Etiquetas Semánticas y SEO
Google odia los <div>. Usa la estructura semántica correcta para posicionar tu sitio en lo más alto sin gastar en anuncios.