在线运行 JavaScript
浏览器原生执行,无需下载任何引擎。代码在独立线程中运行,不会影响当前页面
代码
运行结果
这是什么?
JavaScript 是浏览器的原生语言,所以这个工具不需要下载任何引擎, 打开页面即可运行,是本站加载最快的代码运行器。代码会被放进一个独立的 Web Worker 线程执行,因此死循环不会卡住页面,超时也能被强制终止。
怎么用?
- 在左边写代码,或从右上角「加载示例」挑一个例子;
- 用
console.log()输出内容,结果会显示在右侧; - 点「运行」或按
Ctrl+Enter; 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 即可确保输出完整。