跳到主要内容

JavaScript 在线运行工具

在浏览器里直接运行 JavaScript 代码片段,实时打印 console 输出与返回值,死循环会自动中断。

Ctrl / ⌘ + Enter 运行
运行结果

点「运行代码」后,console 输出会显示在这里。

代码跑在 Web Worker 里:拿不到页面上的 DOM,也不会卡住界面——死循环会在 5 秒后被强制中断。

可以直接写 await,最后一行表达式的值会作为「返回值」显示。

没有 document、window、fetch 之外的宿主能力,网络请求能不能发出去取决于浏览器和对方的 CORS 策略。

这个工具是什么

JavaScript 在线运行工具让你把一段 JS 代码粘进输入框直接跑,结果实时显示在下方。它相当于一个不离开浏览器页面的临时控制台:写得对不对、这段正则匹配到什么、这个日期格式化函数输出长什么样,都可以立刻看到。

代码在浏览器的 Web Worker 里执行,不在服务器上跑,所以关掉页面代码就没了,也不会有任何内容被上传。

什么时候用它

  1. 验证一段不确定写法的代码:可选链、Array.prototype.at、structuredClone 到底能不能用。
  2. 调正则表达式:先在这里把匹配和分组结果打出来,再搬回项目里。
  3. 处理临时数据:把一段 JSON 粘进来,写几行代码过滤、求和、重新拼装。
  4. 记录思路:写个小函数打几个 console.log,看中间值是否符合预期,比在项目里加断点快。
  5. 确认日期与数字格式化的行为,比如 toISOString 与本地时区的换算。

有什么限制

  • 没有 DOM:document、window 在这里不存在,涉及页面的代码跑不了。
  • 没有 require 与 import:不能用第三方库,也没有 Node 的 fs、process。
  • 执行超过 5 秒会被强制中断,防止死循环把标签页卡死。
  • 屏幕上的输出只保留最近 200 行,无限循环里打印的内容会被顶掉。
  • 网络请求受浏览器 CORS 限制:对方接口不允许跨域时,fetch 一样会失败,这是浏览器策略不是工具限制。

常见问题

Q:代码会不会被上传到服务器? A:不会。代码通过 Blob 交给浏览器自己的 Worker 执行,整个过程不发出网络请求。

Q:为什么 document 是 undefined? A:出于隔离考虑,代码跑在没有页面上下文的 Worker 里。这样既拿不到你的登录状态与页面数据,也能在卡住时被直接终止。

Q:能在代码里写 await 吗? A:可以,直接写顶层 await 即可。最后一行如果是表达式,它的值会作为「返回值」单独显示。

Q:为什么我的死循环没把页面卡住,而是自动停了? A:运行器在主线程上设了 5 秒计时,超时就终止 Worker 并给出提示,所以页面本身不会被拖死。

相关工具

同类或常用搭配,接着往下做