这个工具是什么
JavaScript 在线运行工具让你把一段 JS 代码粘进输入框直接跑,结果实时显示在下方。它相当于一个不离开浏览器页面的临时控制台:写得对不对、这段正则匹配到什么、这个日期格式化函数输出长什么样,都可以立刻看到。
代码在浏览器的 Web Worker 里执行,不在服务器上跑,所以关掉页面代码就没了,也不会有任何内容被上传。
什么时候用它
- 验证一段不确定写法的代码:可选链、
Array.prototype.at、structuredClone到底能不能用。 - 调正则表达式:先在这里把匹配和分组结果打出来,再搬回项目里。
- 处理临时数据:把一段 JSON 粘进来,写几行代码过滤、求和、重新拼装。
- 记录思路:写个小函数打几个 console.log,看中间值是否符合预期,比在项目里加断点快。
- 确认日期与数字格式化的行为,比如
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 并给出提示,所以页面本身不会被拖死。