Cómo leer documentación y especificaciones JavaScript | Nicolás Garzón
Aprender JavaScript también implica saber dónde vive cada contrato y cómo leer una fuente sin confundir lenguaje, navegador, runtime o herramienta.
Texto
Copiar ECMAScript → lenguaje
HTML / WHATWG → Event Loop, DOM integration, timers
Fetch Standard → fetch, Request, Response, CORS
Web IDL specs → interfaces del navegador
Node.js docs → APIs y resolución de Node
Tool docs → bundler, framework, linter, test runner
Formula una pregunta observable.
Texto
Copiar ¿Cómo funciona Promise?Texto
Copiar ¿Una callback de then se ejecuta síncronamente si la promesa ya está fulfilled?Esto permite localizar una regla y construir un ejemplo.
¿Es sintaxis o semántica del lenguaje?
¿Es una API del navegador?
¿Es comportamiento de Node.js?
¿Es una transformación del bundler?
¿Es una convención de framework?
JavaScript
Copiar setTimeout ( callback, 0 ) ; setTimeout pertenece al host; Promise jobs pertenecen a ECMAScript y su integración con el Event Loop se define junto al host.
MDN es una referencia práctica excelente para:
Sintaxis.
Ejemplos.
Compatibilidad.
Web APIs.
Enlaces a especificaciones.
Aun así, resume contratos complejos. Cuando una distinción precisa importa, sigue el enlace a la especificación o documentación del runtime.
La especificación usa algoritmos abstractos.
Texto
Copiar Perform ? Operation(value)
Let result be ...
Return result
? propaga abrupt completions.
! afirma que una operación no falla bajo esas condiciones.
Completion Records representan retorno normal o abrupto.
Abstract operations no son funciones públicas necesariamente.
No necesitas leer toda la especificación en orden. Busca la sección concreta y sigue operaciones relacionadas.
La spec define qué debe observar el programa.
Hidden classes.
Nombre del compilador.
Estrategia exacta de GC.
Representación física de valores.
Para eso consulta documentación del motor, sabiendo que puede cambiar.
TC39 desarrolla propuestas por etapas.
Texto
Copiar Stage 0 → idea temprana
Stage 1 → problema y dirección
Stage 2 → diseño en desarrollo
Stage 2.7/3 → especificación avanzada y pruebas
Stage 4 → lista para inclusión en una ediciónNo presentes una propuesta como estándar disponible sin verificar:
Stage actual.
Edición donde se incluyó.
Soporte de runtime.
Tooling.
Una característica puede estar en ECMAScript 2026 y no existir todavía en todos los navegadores objetivo.
Texto
Copiar estandarizado ≠ disponible en todos tus usuariosComprueba tablas de compatibilidad y targets.
HTML y Fetch son living standards que evolucionan continuamente, no ediciones anuales cerradas como ECMAScript.
Cuando citas comportamiento actual, registra fecha y revisa si el runtime implementa esa versión.
Selecciona la versión correcta.
Texto
Copiar Node 20 docs
Node 22 docs
Node 24 docsUna API experimental o comportamiento de ESM puede cambiar entre versiones. No leas “latest” cuando tu proyecto ejecuta una LTS anterior sin comparar.
Un bundler puede aceptar:
JavaScript
Copiar import data from "./data.json" ; aunque el runtime nativo requiera otra configuración o import attributes.
Lo que transforma la herramienta.
Lo que ejecuta el runtime.
Lo que solo funciona en desarrollo.
JavaScript
Copiar console. log ( "start" ) ;
Promise. resolve ( ) . then ( ( ) => console. log ( "microtask" ) ) ;
setTimeout ( ( ) => console. log ( "task" ) , 0 ) ;
console. log ( "end" ) ; Un ejemplo mínimo ayuda a:
Confirmar una interpretación.
Comparar runtimes.
Reportar un bug.
Evitar ruido de framework.
La consola de DevTools puede tener comportamientos especiales:
Await de nivel superior.
Preview de referencias vivas.
Helpers.
Contexto de página.
Confirma resultados relevantes en un archivo o test reproducible.
Browser/version.
Node version.
Modo módulo o script.
Strict mode.
Secure context.
Flag experimental.
Transpiler y polyfill.
Sistema operativo cuando importa.
Cuando la documentación no basta, el código de una librería puede aclarar el comportamiento real de esa versión.
Pero no dependas de una función interna no documentada; puede cambiar sin considerarse breaking change.
Identifica breaking changes.
Nuevos defaults.
Deprecations.
Requisitos de runtime.
Migraciones.
Vulnerabilidades corregidas.
Artículos y videos ayudan a crear intuición, pero pueden:
Simplificar demasiado.
Estar desactualizados.
Describir un motor concreto como regla del lenguaje.
Omitir casos límite.
Úsalos como explicación, no como autoridad final cuando el detalle importa.
Para documentar un concepto:
Define la idea en lenguaje simple.
Identifica la fuente normativa.
Construye un ejemplo mínimo.
Añade casos límite.
Distingue estándar y host.
Indica compatibilidad cuando cambia.
Explica aplicación real.
Conecta notas relacionadas.
Texto
Copiar ¿fetch rechaza ante HTTP 404?
Revisar MDN Fetch.
Ir al Fetch Standard.
Confirmar que Response representa status HTTP.
Ejecutar un servidor que responda 404.
Observar que la promesa cumple con Response.
Documentar response.ok.
Buscar sin identificar la capa.
Citar un artículo antiguo como contrato actual.
Confundir proposal con estándar.
Confundir estándar con soporte.
Leer docs de otra versión de Node.
Afirmar que un detalle de V8 aplica a todos los motores.
Probar solo en consola interactiva.
Depender de una implementación interna de librería.
Copiar snippets sin entender contexto y cleanup.
Primero identifica dónde se define el comportamiento.
MDN explica; la especificación define.
ECMAScript y Web APIs viven en fuentes distintas.
Proposals necesitan verificar etapa y soporte.
Estandarización no garantiza disponibilidad inmediata.
La versión del runtime importa.
Un caso mínimo ayuda a comprobar interpretación.
Documenta compatibilidad y contexto.
¿Por qué una característica disponible en un bundler no puede asumirse como parte de JavaScript nativo?
Respuesta Porque el bundler puede transformar sintaxis, resolver recursos o inyectar APIs que el runtime por sí solo no entiende.
Modelo mental completo de JavaScript conecta los bloques del notebook en una sola explicación.