在 Lua 中重新声明相同名称的变量是否合法?

我是 Lua 的新手,我刚刚发现以下代码在 Lua 中是合法的。

local abc = 123
local abc = 345
print(abc)

上述代码与以下代码有什么区别吗?

local abc = 123
abc = 345
print(abc)
点赞
用户5525442
用户5525442

每次执行本地语句都会定义新的本地变量查看此处,两个变量具有独立的身份,但是使用相同的名称会隐藏第一个变量。

local abc = 123
local function abc1()
  print(abc)
end

local abc = 345
local function abc2()
  print(abc)
end

print(abc1()) -- 123
print(abc2()) -- 345
2018-09-19 08:42:11
用户107090
用户107090

有一个区别。第一个代码有两个本地变量,而第二个代码只有一个。可以使用 debug 库进行检测。比较两个脚本的 luac -l 输出。

2018-09-19 10:26:11