Pular para o conteúdo
ToolMug

Executar JavaScript Online

Cole ou escreva JavaScript e clique em Executar para ver a saída de console.log, warn e error — para testar trechos de código, praticar algoritmos ou depurar uma lógica. O await de nível superior funciona, e o código roda em um worker separado, então um loop infinito não vai travar a página.

Roda no seu navegador — nada do que você digita é enviado

Ctrl+Enter / ⌘+Enter

Console

A saída de console.log aparece aqui.

Executa em um worker separado: sem DOM (document, window), mas fetch, timers, JSON, Intl e outras funções nativas funcionam.

Como usar

  1. Escreva o código à esquerda, ou edite o exemplo.
  2. Clique em Executar ou pressione Ctrl+Enter (⌘+Enter no Mac). A saída do console aparece à direita.
  3. Se o código demorar demais, clique em Parar, ou defina o limite de tempo no canto inferior direito.

Opções explicadas

Ambiente
Um Web Worker no seu navegador, com a sintaxe mais recente de JavaScript suportada pelo seu navegador, fetch, setTimeout, Intl e crypto, mas sem document nem window.
Console
console.log, info, warn, error, debug, table, count e time/timeEnd, com os marcadores %s, %d e %o. Objetos são expandidos de forma parecida ao Node.js.
Await de nível superior
O código roda dentro de uma função async, então você pode usar await diretamente.

O que é impresso

Só aparece na saída o que você envia ao console. O valor da última linha não é mostrado como seria no console de um navegador, então envolva-o em console.log. A impressão segue o estilo do Node.js: arrays e objetos são expandidos, as strings dentro deles aparecem entre aspas, e os marcadores %s e %d são preenchidos com os argumentos seguintes.

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);

As três primeiras linhas imprimem [ 1, 4, 9 ], Ada is 36 years old e { name: "Ada", tags: [ "a", "b" ] }. As duas últimas precisam de conexão com a rede e imprimem o status HTTP da requisição. O limite de tempo pode ser definido como 5, 10, 30 ou 60 segundos; ao ser atingido, a execução é encerrada e uma mensagem avisa isso.

Perguntas frequentes

Posso importar pacotes do npm?

Não com instruções import. Você pode carregar pacotes ESM dinamicamente com await import('https://esm.sh/nome-do-pacote'), o que exige conexão com a internet.

E se eu escrever um loop infinito?

Clique em Parar para encerrá-lo na hora, ou ele para automaticamente ao atingir o limite de tempo. Cada execução usa um worker novo, então a página não é afetada.

Meu código é enviado a algum servidor?

Não. Ele roda só no seu navegador; as únicas requisições de rede são as que o seu próprio código faz.

TypeScript é suportado?

Por enquanto só JavaScript; remova as anotações de tipo do TypeScript antes.

Privacidade

Esta ferramenta funciona inteiramente no seu navegador. Seus arquivos e textos são processados no seu dispositivo e nunca são enviados aos nossos servidores.

Ferramentas relacionadas