今天跟师傅请教了一下午,总算是把这个玩意搞透彻了 f = 4 function a() f = 3 print(getfenv(0).f, getfenv(1).f, getfenv(2).f, getfenv(3).f) end A = {} setmetatable(A, {__index = _G}) setfenv(a, A) function b() f = 2 A.a() end B = {} setmetatable(B, {__index = _G}) setfenv(b, B) function c() f = 1 B.b() end C = {} setmetatable(C, {__index = _G}) setfenv(c, C) c() 只有setfenv了环境。。getfenv才能生效。