Como usar o compilador JavaScript online
- Escreva ou cole seu JavaScript no editor. Você pode restaurar o exemplo inicial com Restaurar exemplo.
- Pressione Executar ou use Ctrl + Enter (⌘ + Enter no Mac).
- A saída de
console.log,console.infoeconsole.debugaparece no painel Saída.console.warn,console.errore exceções não tratadas, incluindo seus stack traces, são destacados como erros. - 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/Sete os métodos de array mais recentes. awaitno nível superior: seu código é envolvido em uma função assíncrona, então você pode usarawaitem promises diretamente.- Timers e promises:
setTimeout,setInterval,Promise.alle 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.getRandomValuesestructuredClone.
Limitações:
- Sem DOM. O código roda em um worker, então
document,windowealert()não estão disponíveis. - Sem
import/require. Isto não é Node.js, então pacotes npm e módulos do Node comofsnão podem ser carregados. console.tableimprime 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');
| Tarefa | Sintaxe |
|---|---|
| Declarar variáveis | const x = 1; let y = 2; |
| Arrow function | const add = (a, b) => a + b; |
| Template literal | `Total: ${sum}` |
| Igualdade estrita | a === b |
| Desestruturação | const { id, name } = user; |
| Aguardar uma promise | const 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. MapeSetsão impressos com o tamanho e o conteúdo (por exemploMap(2) [...]), e valoresBigIntcom o sufixon.- 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
globalThispersistem entre execuções até você pressionar Parar. Variáveis declaradas comconstoulet, não.
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