常见错误
- attempt to call global “xxx"
_G["fn"] = function()
print("Global_fn")
end
local fn = function(n)
if( n < 1 ) then return end
print("n:" .. n)
fn(n-1)
end
fn(10)
--[[ 输出:
n:10
Global_fn
--]]
局部函数的定义中,如果出现对本身的调用,需要先声明fn为局部变量,再定义,否则会去全局中寻找fn的属性。
local fn
fn = function()
if( n < 1 ) then return end
print("n:" .. n)
fn(n-1) -- 保证能寻址到局部变量,如果是定义和声明一起,访问不到fn变量,可能是同行导致无法寻找
end