在线运行 Lua
浏览器内置真正的 Lua 5.4 解释器,常用于游戏脚本、嵌入式扩展与配置
代码
运行结果
这是什么?
这是一个真正的 Lua 5.4 解释器,由官方 Lua 源码编译成 WebAssembly 后在你浏览器中运行。Lua 体积很小(引擎仅约 424KB),却是游戏行业使用最广的脚本语言 —— 魔兽世界插件、Roblox、Redis 脚本、Nginx/OpenResty 配置都用它。
怎么用?
- 在左边写代码,或从右上角「加载示例」挑一个例子;
- 用
print()输出,结果显示在右侧; - 点「运行」或按
Ctrl+Enter。
支持能力对照
| 能力 | 是否支持 | 说明 |
|---|---|---|
| Lua 5.4 完整语法 | 支持 | 表、元表、闭包、协程、goto 等 |
| 标准库 | 支持 | string、table、math、os(时间相关)、io.write |
| print 输出 | 支持 | 多个参数之间用制表符分隔,与官方解释器一致 |
| unicode / utf8 库 | 支持 | Lua 5.4 自带 utf8 库 |
| 文件读写 | 不支持 | 浏览器沙箱内没有真实文件系统 |
| require 加载模块 | 不支持 | 单文件运行环境 |
| 读取标准输入 | 不支持 | io.read 在浏览器环境中不可用 |
| 长时间运行 | 限 10 秒 | 超时自动终止,死循环不会卡住页面 |
常见问题
为什么 fruits[0] 是 nil?
Lua 的数组索引从 1 开始,不是从 0。这是 Lua 与绝大多数语言最大的
区别,也是新手最常踩的坑。fruits[0] 不会报错,只会安静地返回
nil。
字符串为什么不能用 + 连接?
Lua 用 ..(两个点)做字符串连接,用 + 会报
"attempt to perform arithmetic on a string value"。同样地,不等于用
~= 而不是 !=。
ipairs 和 pairs 有什么区别?
ipairs 按整数索引 1、2、3… 顺序遍历,遇到 nil 就停,适合数组;
pairs 遍历所有键值对,顺序不保证,适合字典。遍历数组用 ipairs。
代码会被上传吗?
不会。Lua 解释器下载到你的浏览器后本地执行,代码从未离开你的设备。