LUA: localized _G 变量在堆栈上进行数据查找吗?

如果您觉得这个问题的标题有点混乱,我向您道歉。我无法找到更好的方式来描述我的问题。我总是为了弄清楚 Lua 中这个具体的情况而头疼。

在下面的示例中,Lua 是否会在堆栈的本地化变量中查找函数,还是在表的哈希部分中查找函数?请注意,全局函数写成 SomeGlobalFunc(),而不是 _G.SomeGlobalFunc()

--本地化全局环境
local _G = _G

--运行全局函数
SomeGlobalFunc()

原文链接 https://stackoverflow.com/questions/70587626

点赞
stackoverflow用户1847592
stackoverflow用户1847592

Lua 手册上说:

_G 从未在内部使用,因此改变它的值只会影响到你自己的代码。

这意味着 _G 的所有操作都不会影响 Lua 程序的行为,除非你显式地使用该变量,例如 _G.func()

换句话说,Lua可以知道全局变量表的位置,而无需访问变量 _G

P.S.

Lua 在内部使用 _ENV 变量,而不是 _G

2022-01-05 08:11:41