Saltar al contenido
ToolMug

Ejecutar JavaScript online

Pega o escribe JavaScript y haz clic en «Ejecutar» para ver la salida de console.log, warn y error — para probar fragmentos, practicar algoritmos o depurar algo de lógica. El await de nivel superior funciona, y el código se ejecuta en un worker aparte, así que un bucle infinito no bloqueará la página.

Funciona en tu navegador: nada de lo que introduces se sube

Ctrl+Enter / ⌘+Enter

Consola

Aquí aparece lo que genere console.log.

Se ejecuta en un worker independiente: no hay DOM (document, window), pero funcionan fetch, temporizadores, JSON, Intl y otras funciones integradas.

Cómo se usa

  1. Escribe el código a la izquierda, o edita el ejemplo.
  2. Haz clic en «Ejecutar» o pulsa Ctrl+Enter (⌘+Enter en Mac). La salida de la consola aparece a la derecha.
  3. Si el código tarda demasiado, haz clic en «Detener», o ajusta el límite de tiempo abajo a la derecha.

Opciones explicadas

Entorno
Un Web Worker en tu navegador, con la sintaxis de JavaScript más reciente que admita tu navegador, fetch, setTimeout, Intl y crypto, pero sin document ni window.
Consola
console.log, info, warn, error, debug, table, count y time/timeEnd, con los marcadores %s, %d y %o. Los objetos se expanden de forma parecida a Node.js.
Await de nivel superior
El código se ejecuta dentro de una función async, así que puedes usar await directamente.

Qué se imprime

En la salida solo aparece lo que envías a la consola. El valor de la última línea no se muestra como ocurriría en la consola de un navegador, así que envuélvelo en console.log. La impresión sigue el estilo de Node.js: los arrays y los objetos se expanden, las cadenas que contienen se muestran entre comillas, y los marcadores %s y %d se rellenan con los argumentos siguientes.

console.log([1, 2, 3].map((n) => n * n));
console.log('%s is %d years old', 'Ada', 36);
console.log({ name: 'Ada', tags: ['a', 'b'] });
const data = await fetch('https://example.com/').then((r) => r.status);
console.log(data);

Las tres primeras líneas imprimen [ 1, 4, 9 ], Ada is 36 years old y { name: "Ada", tags: [ "a", "b" ] }. Las dos últimas líneas necesitan conexión de red e imprimen el estado HTTP de la petición. El límite de tiempo puede fijarse en 5, 10, 30 o 60 segundos; al alcanzarlo, la ejecución termina y un mensaje lo indica.

Preguntas frecuentes

¿Puedo importar paquetes de npm?

No con instrucciones import. Puedes cargar paquetes ESM dinámicamente con await import('https://esm.sh/nombre-del-paquete'), lo que necesita conexión a internet.

¿Qué pasa si escribo un bucle infinito?

Haz clic en «Detener» para acabarlo al instante, o se detiene solo al llegar al límite de tiempo. Cada ejecución usa un worker nuevo, así que la página no se ve afectada.

¿Se sube mi código?

No. Solo se ejecuta en tu navegador; las únicas peticiones de red son las que haga tu propio código.

¿Se admite TypeScript?

Por ahora solo JavaScript; quita antes las anotaciones de tipos de TypeScript.

Privacidad

Esta herramienta funciona por completo en tu navegador. Tus archivos y textos se procesan en tu dispositivo y nunca se suben a nuestros servidores.

Herramientas relacionadas