在Lua中,我应该在循环的每次迭代或循环之前定义变量吗?

Yur*_*sev 4 performance lua loops memory-management

特别是在Lua中,这样做会对我造成任何伤害:

for i = 1, 10 do
    local foo = bar()
    -- do stuff with foo
end
Run Code Online (Sandbox Code Playgroud)

而不是这个:

local foo
for i = 1, 10 do
    foo = bar()
    -- do stuff with foo
end
Run Code Online (Sandbox Code Playgroud)

我的意思是,Lua会尝试为foo每次迭代分配新的内存吗?第一个块会导致执行速度变慢吗?

lhf*_*lhf 5

寻求最安全的替代方案,即对所有变量使用最小范围.至于效率,局部变量存储在堆栈中; 循环内部没有内存分配.