lua初学者 关于local函数的一个问题

local f,g
local function f()
print("Hello f1!");
g()
end

local function g()
print("Hello g1!");
end
f()

如上,运行的时候为何会报错?实际上,我理解最开始已经声明了函数g,所以函数f中调用g的时候是应该可以找到的~
报错如下
Hello f1!
lua: localFunction.lua:4: attempt to call upvalue 'g' (a nil value)
stack traceback:
localFunction.lua:4: in function 'f'
localFunction.lua:10: in main chunk
[C]: ?

执行的时候g还未初始化。函数g的定义放前面。

local f, g

f = function()
    print("Hello f1!");
    g()
end

g = function()
    print("Hello g1!");
end

f()

这样写,才是你想要的预定义方式。你的写法,相当于开头只是声明,后面又重新定义,所以,在调用f的时候,g是还没定义的。