在线运行 JavaScript

浏览器原生执行,无需下载任何引擎。代码在独立线程中运行,不会影响当前页面

就绪

代码

运行结果


        

这是什么?

JavaScript 是浏览器的原生语言,所以这个工具不需要下载任何引擎, 打开页面即可运行,是本站加载最快的代码运行器。代码会被放进一个独立的 Web Worker 线程执行,因此死循环不会卡住页面,超时也能被强制终止。

怎么用?

  1. 在左边写代码,或从右上角「加载示例」挑一个例子;
  2. 用 console.log() 输出内容,结果会显示在右侧;
  3. 点「运行」或按 Ctrl+Enter;
  4. console.warn() 与 console.error() 会以红色显示,便于区分。

支持能力对照

能力是否支持说明
全部 ES 语言特性支持箭头函数、解构、展开、可选链、类、生成器、正则等
顶层 await支持可以直接写 await,无需包在 async 函数里
console 输出支持log / info / debug 为普通输出,warn / error 为红色
访问页面 DOM不支持代码运行在独立线程中,document 不存在
import / export不支持单文件运行环境,没有模块解析能力
网络请求不支持站点安全策略限制,无法向外发起请求
alert / prompt不支持无页面交互界面,已置为无操作
长时间运行限 10 秒超时自动终止,避免死循环占用资源

常见问题

为什么 document 和 window 用不了?

代码运行在 Web Worker 里,这是浏览器的设计 —— Worker 是独立线程,没有 DOM。 这样做是为了让死循环可以被打断,并且让代码碰不到你正在浏览的页面。 如果想练习 DOM 操作,可以在本机浏览器按 F12 打开控制台。

为什么 import 报错?

这是一个单文件运行环境,没有模块解析器。import 与 export 在浏览器中需要服务器提供模块文件,这里做不到。把所有需要的代码写在一个文件里即可。

代码会被上传吗?

不会。JavaScript 由浏览器直接执行,代码从未离开你的设备。服务器只发送了页面本身。

异步代码没输出完就结束了?

如果用了 setTimeout 或未 await 的 Promise,回调可能在结果上报之后才执行。 给异步操作加上 await 即可确保输出完整。

相关工具

TypeScript 在线运行 · 全部代码运行工具 · JSON 格式化