现在,我一直在这样制作 for 循环
local i
for i = 1, 10 do
--stuff
end
Run Code Online (Sandbox Code Playgroud)
因为我认为你应该尝试保持local更好的性能并降低错误风险。
然而,我注意到简单地使用是很常见的。
for i = 1, 10 do
--stuff
end
Run Code Online (Sandbox Code Playgroud)
使用是local首选,还是省略它无害?
(编辑)您提供的代码示例之间没有区别。但是,请注意,您定义的变量与循环local i中使用的变量不同for i = 1, 10 do。当循环退出时, 的原始值i保持不变(即i == nil)。
siffiejoe 指出,即使预先定义了相同的变量名,循环控制/计数器变量也永远无法在循环之外访问。循环内对变量的任何引用都将使用循环值。循环之外的任何引用都将使用原始值或非循环值。
因此,可以安全地在for语句中重用现有变量名称,而不会损坏原始变量名称。如果要在循环后访问计数器变量,可以预先定义一个额外的变量并在循环内更新它,如下所示(siffiejoe 的示例):
local j
for i = 1, 10 do
j = i
--[[ stuff ]]
end
print(j) -- j stores the last value of i before the loop exits
Run Code Online (Sandbox Code Playgroud)
文档:数字