JavaScript online - IDE, editor, compilador, interpretador

RSS

Execute JavaScript na hora em um worker isolado (sandbox), com saída no console, async/await e recursos modernos do ES2024. Sem cadastro e sem instalar nada.

ES2024 (your browser's engine) · Roda no seu navegador, então seu código nunca chega aos nossos servidores.
main.jsJavaScript
Saída

            
        
Ctrl/⌘ + Enter para executar

Recursos do compilador JavaScript online (IDE, editor & interpretador)

Escreva, execute e teste código JavaScript online de graça. Esta página funciona como IDE, editor de código, compilador e interpretador JavaScript online, tudo em um: digite seu código, clique em Executar e veja a saída na hora. Tudo roda no seu navegador, sem nada para instalar e sem conta para criar.

  • Execute código na hora: ES2024 (your browser's engine), com saída em menos de um segundo após o primeiro carregamento.
  • Editor de código: realce de sintaxe, números de linha, correspondência de colchetes e fechamento automático de colchetes.
  • Erros claros: mensagens de erro e avisos aparecem no painel de saída, como apareceriam no seu próprio computador.
  • Tela cheia: Ctrl/⌘ + Shift + F, tamanho de fonte ajustável, layout lado a lado ou empilhado e painéis redimensionáveis.
  • Salvamento automático: seu código fica guardado no seu navegador; baixe-o como main.js ou copie-o com um clique.
  • Seguro para experimentar: um limite de tempo e um botão Parar encerram loops infinitos.
  • Privado: o runtime JavaScript roda no seu dispositivo, então seu código nunca é enviado.
  • Modo escuro e atalhos de teclado: Ctrl/⌘ + Enter executa o código.
  • Grátis: sem cadastro, sem limites de uso.

Aprenda outras linguagens de programação

Como usar o compilador JavaScript online

  1. Escreva ou cole seu JavaScript no editor. Você pode restaurar o exemplo inicial com Restaurar exemplo.
  2. Pressione Executar ou use Ctrl + Enter (⌘ + Enter no Mac).
  3. A saída de console.log, console.info e console.debug aparece no painel Saída. console.warn, console.error e exceções não tratadas, incluindo seus stack traces, são destacados como erros.
  4. Escolha um limite de tempo de 5, 15 ou 60 segundos. Um script que rodar por mais tempo é interrompido automaticamente, e você pode pressionar Parar quando quiser.

Não há nada para baixar. O JavaScript roda no motor que já vem embutido no seu navegador, então a página fica pronta na hora. Use Copiar ou main.js para salvar seu código.

Seu código roda localmente, em um Web Worker no seu próprio navegador. Ele nunca é enviado nem armazenado em nossos servidores. O editor lembra seu último código no armazenamento local do navegador, e em nenhum outro lugar.

O que é suportado

  • JavaScript moderno: tudo o que seu navegador suporta, incluindo classes, arrow functions, desestruturação, encadeamento opcional (?.), coalescência nula (??), BigInt, Map/Set e os métodos de array mais recentes.
  • await no nível superior: seu código é envolvido em uma função assíncrona, então você pode usar await em promises diretamente.
  • Timers e promises: setTimeout, setInterval, Promise.all e funções parecidas funcionam. A execução é considerada concluída quando o código do nível superior (incluindo qualquer trabalho aguardado com await) termina.
  • Web APIs seguras para workers, como JSON, Intl, TextEncoder, crypto.getRandomValues e structuredClone.

Limitações:

  • Sem DOM. O código roda em um worker, então document, window e alert() não estão disponíveis.
  • Sem import/require. Isto não é Node.js, então pacotes npm e módulos do Node como fs não podem ser carregados.
  • console.table imprime os dados como JSON, e não como uma tabela desenhada.
  • O comportamento depende do navegador que você usa. Recursos muito novos podem não existir em navegadores mais antigos.

Referência rápida de JavaScript

const scores = { ada: 91, linus: 78, grace: 85 };

const passed = Object.entries(scores)
  .filter(([, s]) => s >= 80)
  .map(([name, s]) => `${name}: ${s}`);

console.log(passed);           // ["ada: 91", "grace: 85"] como JSON

const sleep = ms => new Promise(r => setTimeout(r, ms));
await sleep(100);
console.log(scores.bob ?? 'no score');
TarefaSintaxe
Declarar variáveisconst x = 1; let y = 2;
Arrow functionconst add = (a, b) => a + b;
Template literal`Total: ${sum}`
Igualdade estritaa === b
Desestruturaçãoconst { id, name } = user;
Aguardar uma promiseconst data = await promise;

Dicas

  • Objetos e arrays são impressos como JSON indentado. Registre-os diretamente, por exemplo console.log({ a, b }), para ver os nomes das variáveis ao lado dos valores.
  • Map e Set são impressos com o tamanho e o conteúdo (por exemplo Map(2) [...]), e valores BigInt com o sufixo n.
  • Copie a saída JSON para o formatador de JSON para validá-la ou para recolher e explorar estruturas grandes.
  • Para organizar código bagunçado ou minificado, passe-o pelo formatador de JavaScript antes de colá-lo aqui.
  • Valores atribuídos a globalThis persistem entre execuções até você pressionar Parar. Variáveis declaradas com const ou let, não.
Dica: Quer anotações de tipo? O compilador TypeScript online funciona do mesmo jeito e também mostra o JavaScript que ele gera.

Perguntas frequentes

Qual versão de JavaScript é executada?

A que o motor do seu navegador suportar: V8 no Chrome e no Edge, SpiderMonkey no Firefox ou JavaScriptCore no Safari. As versões atuais de todos eles suportam ECMAScript moderno, incluindo recursos do ES2024.

Por que document é undefined?

Para manter a página responsiva e segura, seu código roda em um Web Worker, que não tem acesso à página. Use esta ferramenta para lógica, algoritmos e processamento de dados, e não para manipular o DOM.

Posso usar pacotes npm?

Não. import, require e os módulos nativos do Node.js não estão disponíveis. Só é possível usar a linguagem e as Web APIs padrão que os workers oferecem.

O que acontece se eu escrever um loop infinito?

A página continua respondendo, porque o loop roda em um worker. Quando o limite de tempo é atingido, ou quando você pressiona Parar, o worker é encerrado e seu código para.

Atualizado

Copiado para a área de transferência