Note:
1.Lua 中的变量全是全局变量,无论语句块或是函数里,除非用 local 显式声明为局部变量,变量默认值均为nil
2.使用local创建一个局部变量,与全局变量不同,局部变量只在被声明的那个代码块内有效。(代码块:指的是一个控制结构内,一个函数体,或者一个chunk(变量被声明的那个文件或者文本串))
x = 10
local i = 1 --local to the chunk
while i <= x do
local x = i * 2 --local to the while body
print(x)
i = i + 1
end
if i > 20 then
local x -- local to the "then" body
x = 20
print(x + 2)
else
print(x)
end
print(x)
运行结果:
注意:如果在交互模式下上面的例子可能不能输出如期结果,因为第二句的local i=1是一个完整的chunk,在交互模式下执行完这一句后,Lua 将开始一个新的chunk,这样第二句的i 已经超出他的有效范围。可将这段代码放在do...end中(相当于C的{...})
3.尽可能使用局部变量,有两个好处
a.避免命名冲突
b.访问速度更快(原因是local变量是存放在lua的