Redeclaring variable using the same name is legal in Lua?

时间:2018-09-19 08:28:20

标签: lua

I'm a newbie in Lua and I just found out the following code is legal in Lua.

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

Is there any difference between the above and the following?

local abc = 123 
abc = 345
print(abc)

2 个答案:

答案 0 :(得分:5)

每次执行局部语句都会定义新的局部变量check this 这两个变量具有单独的标识,但是使用相同的名称将隐藏第一个变量

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

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

print(abc1()) -- 123
print(abc2()) -- 345

答案 1 :(得分:3)

有区别。第一个代码具有两个局部变量,而第二个则只有一个。例如,可以使用调试库检测到。比较两个脚本上luac -l的输出。