首页/其它工具/在线运行 JS

运行 JavaScript

客户端 JavaScript 游乐场。

Editor

Console

Terminal Ready

功能简介

在线运行 JS

在线 JS 轻量级沙箱。为您提供一个即开即用的 JavaScript 运行环境,支持实时预览 Console 输出。非常适合测试代码片段、验证正则逻辑或快速演示算法过程。

如何使用

1. 在编辑器中编写或粘贴 JS 代码;2. 设置触发执行的条件(自动刷新或手动点击);3. 在输出面板实时查看运行结果与错误堆栈。

安全保障

沙箱运行。代码由浏览器引擎在受限沙箱中解析,不触及您的文件系统或敏感环境变量,且代码内容不经过后端的上传存储。

100% Client Side
📘 使用指南与技术说明

痛点引入

想要快速测试一段 JavaScript 代码,却不想打开繁重的 IDE?或者在调试复杂的算法时,被浏览器 Console 杂乱的输出搞得心烦意乱?更糟糕的是,直接在浏览器 Console 运行不可信的代码可能会破坏当前页面的状态。RunJS 在线实验室正是为此而生:它不仅提供了一个纯净、安全的沙箱环境,还集成了代码美化、常用库预设等生产力特性,让你彻底告别调试“踩坑”。

核心功能深度解析

RunJS 的核心不仅是一个编辑器,而是一个完整的代码执行生态系统

安全沙箱 (Secure Sandbox):我们采用了 <iframe> 隔离技术,配合 HTML5 的 sandbox 属性,确保用户的脚本在完全独立的环境中运行。这意味着你的代码无法访问主站的 Cookie 或 DOM,即便运行 document.write 也不会弄崩页面,极大地提升了安全性。

控制台模拟 (Console Simulation):我们重写了沙箱内的 console.logwarnerror 方法。通过 window.postMessage 将输出实时捕获并转发到父级 UI。这种“所见即所得”的日志展示方式,比浏览器原生 F12 更加直观,特别适合教学和快速演示。

CDN 库预设 (Library Presets):内置了 jQuery, Lodash, Axios, Moment 等常用开发库。通过动态注入 <script> 标签,你无需手动寻找 CDN 链接,一键即可在代码中使用这些强大的工具,效率直接拉满。

代码格式化 (Beautify):集成 js-beautify 算法,无论你的代码多么凌乱,只需轻轻一点,即可恢复优雅的缩进和格式,符合 PEP 8 风格(JavaScript 版)的整洁美学。

行业应用场景

  1. 算法练手:面试前复习 LeetCode 经典题目,在纯净的控制台中观察数据变化。
  2. 前后端联调数据处理:拿到一段复杂的 JSON 响应,用 Lodash 在这里快速编写数据转换逻辑,验证后再迁移到项目中。
  3. 前端技术教学:老师可以配合预设的库(如 jQuery)演示 DOM 操作,学生通过直观的内部控制台看到运行结果。
  4. 组件逻辑预研:在不启动整个 Next.js 项目的情况下,快速测试一个工具函数的边界情况。

FAQ 常见问题

Q1:为什么我的代码运行没有反应? A:请检查代码中是否有语法错误。虽然控制台能捕获大多数运行时错误,但在极少数情况下,如果脚本加载失败或存在阻塞性死循环,建议刷新页面重置沙箱。

Q2:如何清理控制台输出? A:右侧控制台区域提供了“清空”按钮,点击即可重置输出状态,保持界面整洁。

Q3:支持同步执行还是异步执行? A:支持所有标准的 JavaScript 执行模式,包括 async/await。你可以直接在编辑器中编写 fetchsetTimeout 等异步逻辑。

Q4:库预设是如何工作的? A:勾选库后,系统会在执行前向沙箱动态插入对应 CDN 地址。你可以直接使用 $, _, axios 等全局变量。

Q5:代码执行有超时限制吗? A:受限于浏览器主线程,如果你编写了死循环,页面可能会卡死。建议在沙箱环境下谨慎运行高并发或高复杂度的算法。

技术科普/延伸阅读

JavaScript 的动态执行(如 evalnew Function)虽然方便,但存在严重的安全漏洞(XSS 攻击)。现代 Web 开发的最佳实践是利用 <iframe>srcdoc 属性和 sandbox 策略来构建“囚室”,限制脚本的活动范围。RunJS 正是基于这一架构,平衡了灵活性与安全性。延伸学习建议:了解 Web Workers 如何在后台线程处理计算密集型任务而不阻塞 UI。

📖 精选技术文章推荐

那些藏在 URL 里的双重编码漏洞:一次 SQL 注入的完整路径

明明部署了昂贵的 WAF 防火墙,为什么数据库还是被拖库了?黑客并没有使用什么零日漏洞,而是巧妙地利用了 URL 的“双重编码”特性。本文将带你重构一次真实的攻击路径,揭示架构分层中的安全盲区,以及开发者最容易犯的致命错误。

那个把对象直接 toString 传进 URL 的同事,把我们的接口搞崩了

一个前端新人的失误:'?filter=[object Object]',让后端的 JSON.parse 直接崩溃,引发了一场 P3 级事故。本文深入探讨 JSON 与 GET 参数互转的种种陷阱:嵌套对象怎么传?数组怎么解析?URL 长度限制在哪里?以及如何避开这些暗坑。

计算机差点变成巴别塔:Unicode 发明前,我们如何处理多语言文字

在 UTF-8 统治世界之前,计算机世界曾是一片混乱的割据地。为了显示中文、日文或希腊文,开发者们发明了无数互不兼容的“代码页”。本文带你回顾那段满是乱码、冲突与妥协的编码演进史,理解 Unicode 存在的终极意义。

消失的字符:处理民族文字展示时的编码与渲染深坑

在开发文本分析工具时,我们发现 UTF-8 并不是万能药。当遇到藏文的叠加字、维吾尔文的 RTL 镜像渲染以及复杂的 Unicode 代理对时,传统的字符串处理逻辑会瞬间失效。本文记录 daima.life 在适配多元文字时的技术复盘。

💡 想要更多功能?

发现 Bug 或是希望加入新工具?支持免费提建议或商业私有化定制开发