6

我正在测试 Lua 的作用域,并发现了一些意想不到的东西。以下代码不打印 localMainVariable。

function functionScope()
    print( "\nIn function")
    print( "globalMainVariable: " .. globalMainVariable )
    if (localMainVariable ~= nil) then print( "localMainVariable: " .. localMainVariable ) end
end

globalMainVariable = "Visible"
local localMainVariable = "Visible"
functionScope()

但是下面的代码确实打印了 localMainVariable。

globalMainVariable = "Visible"
local localMainVariable = "Visible"

function functionScope()
    print( "\nIn function")
    print( "globalMainVariable: " .. globalMainVariable )
    if (localMainVariable ~= nil) then print( "localMainVariable: " .. localMainVariable )  end
end

functionScope()

我知道这与声明 localMainVariable 的位置有关,但我认为将其设为本地会限制变量的范围。实际的规则是什么?

谢谢

4

1 回答 1

5

局部变量的范围从其声明后的第一条语句开始,一直持续到包含该声明的最内层块的最后一个非 void 语句。

Lua手册

于 2013-03-23T17:43:50.053 回答