Перейти к содержимому
ToolMug

Запуск JavaScript онлайн

Вставьте или напишите JavaScript и нажмите «Запустить», чтобы увидеть вывод console.log, warn и error — для экспериментов, алгоритмов и отладки. Работает top-level await, а код выполняется в отдельном worker, поэтому бесконечный цикл не заморозит страницу.

Работает в браузере — введённые данные никуда не загружаются

Ctrl+Enter / ⌘+Enter

Консоль

Здесь появится вывод console.log.

Запускается в отдельном worker: DOM (document, window) недоступен, но работают fetch, таймеры, JSON, Intl и другие встроенные возможности.

Как пользоваться

  1. Напишите код слева или измените пример.
  2. Нажмите «Запустить» или Ctrl+Enter (⌘+Enter на Mac). Вывод консоли появится справа.
  3. Если код выполняется слишком долго, нажмите «Остановить» или задайте лимит времени внизу справа.

Описание параметров

Среда
Web Worker в браузере с поддержкой актуального синтаксиса JavaScript, fetch, setTimeout, Intl и crypto, но без document и window.
Консоль
console.log, info, warn, error, debug, table, count и time/timeEnd с заполнителями %s, %d и %o. Объекты раскрываются примерно как в Node.js.
Top-level await
Код выполняется внутри async-функции, поэтому await можно использовать напрямую.

Что выводится

В результат попадает только то, что вы отправляете в консоль. Значение последней строки не показывается, как это было бы в консоли браузера, поэтому оберните его в console.log. Вывод оформляется в стиле Node.js: массивы и объекты раскрываются, строки внутри них берутся в кавычки, а заполнители %s и %d подставляются из следующих аргументов.

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

Первые три строки выводят [ 1, 4, 9 ], Ada is 36 years old и { name: "Ada", tags: [ "a", "b" ] }. Последним двум строкам нужно подключение к сети, и они выводят HTTP-статус запроса. Ограничение времени можно установить в 5, 10, 30 или 60 секунд; когда оно достигается, выполнение прекращается, и об этом сообщается.

Часто задаваемые вопросы

Можно ли импортировать npm-пакеты?

Обычные import нельзя использовать. ESM-пакеты можно динамически загрузить через await import('https://esm.sh/package-name'), но потребуется интернет.

Что произойдёт с бесконечным циклом?

Нажмите «Остановить», чтобы завершить его сразу, или дождитесь автоматической остановки по лимиту времени. Каждый запуск использует новый worker, поэтому страница не пострадает.

Мой код загружается?

Нет. Он выполняется только в браузере; сетевыми будут только запросы, которые делает ваш код.

Поддерживается ли TypeScript?

Пока только JavaScript; сначала удалите аннотации типов TypeScript.

Конфиденциальность

Этот инструмент работает полностью в браузере. Ваши файлы и текст обрабатываются на вашем устройстве и никогда не загружаются на наши серверы.

Похожие инструменты