JavaScript 在线运行

写 JS 点运行,捕获 console.log/error/warn 输出并显示运行时长

用 new Function 执行,捕获 console 输出,不离开浏览器。

JavaScript 在线运行:执行环境、console 捕获与安全边界

代码是怎么被执行的

工具把输入的代码交给 new Function 构造一个函数并执行。这种方式的特点是:

这带来一个必须说清的边界,见下面的安全一节。

console 输出是怎么被抓到的

工具临时替换了 console.log、console.error、console.warn 等方法的实现,把参数收集起来显示在输出区。实际含义:

情况表现
console.log('a', 1)按顺序拼接显示
console.log({a:1})取决于实现,可能显示为 [object Object];稳妥写法是 JSON.stringify(obj, null, 2)
console.table / console.group通常不被捕获,需要用 log 替代
浏览器控制台的原始输出仍然可用(开发者工具里能看到),捕获只是额外收集了一份

另外工具会显示执行时长,用来大致判断操作的量级(比如比较两种算法、确认某个循环能否接受)。注意这只是单次运行的墙钟时间,受 JIT 预热与当前负载影响,不能当作基准测试——测性能应该在控制台里跑多次取中位数,或者用专门的基准工具。

异步代码的处理

这类工具对异步的支持通常是有限的:

安全边界:这是一条明确的纪律

因为代码在页面上下文里直接执行,它能访问这个站点的存储与网络。虽然本站没有账号体系、不保存个人数据,风险有限,但纪律仍然成立:

如果只是想安全地试一段不涉及敏感数据的算法,这个工具很方便;涉及凭证或不可信来源时,选隔离更好的方式。

典型用途

全部在浏览器本地执行,代码不上传。

常见问题

为什么不能用 const/let 顶层?

代码包在 new Function 的函数体里,const/let 在函数作用域内完全可用;但 return 等语句需用函数写法。