常见问题
代码会上传吗?
不会。JavaScript 本来就在浏览器里执行,代码不出你的设备。
支持 async/await 和 Promise 吗?
支持,可以直接写异步代码,结果会等 Promise 落定后输出。
能操作页面的 DOM 吗?
不能。代码在隔离环境中执行,拿不到这个工具页面的 DOM,避免互相干扰。
关于这个工具
代码在当前页面的主线程里执行,用 new Function 包成一个 async 箭头函数体 —— 所以顶层可以直接写 await,但 import 不行(这不是模块环境)。
console.log / warn / error / info 会被接管并按级别着色:多个参数用空格拼接,对象和数组用 JSON.stringify 展开(遇到循环引用或函数退回 String())。耗时显示在状态栏,报错带原始消息。
它不是沙箱:代码与页面同源同作用域,能读写 window、操作 DOM、发网络请求。把别人的代码粘进来等于在页面上直接执行,跑之前先读一遍。
还有一个必须知道的点:没有超时保护。写一个死循环或很慢的同步计算会把整个页面卡住,只能关标签页。跑耗时计算前,先确认循环有明确退出条件。