LUA: 数据查找是否发生在堆栈上的本地化 _G 变量处?

LUA: does data lookup occur at the localized _G variable on the stack?

如果这个问题的标题有点令人困惑,我深表歉意。我找不到更好的方式来描述我的问题。 lua.

我总是撞墙想弄清楚这个具体情况

给出下面的例子,lua 会在堆栈上的本地化变量中查找函数还是在 table 的散列部分中查找它?请注意,全局函数写为 SomeGlobalFunc() 而不是 _G.SomeGlobalFunc()

--localize the global environment
local _G = _G

--run global func
SomeGlobalFunc()

Lua 手册说:

_G is never used internally, so changing its value will affect only your own code

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

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

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