这是一个旧版本的
LuaTips于2006-03-07 22:11:20.
Lua 的 5.1 版本已经正式发布。现在,我们应该把全部讨论放在这个版本上。
应该尽量使用 local 变量而非 global 变量。这是
Lua 初学者最容易犯的错误。global 变量实际上是放在一张全局的 table 里的。global 变量实际上是利用一个 string (变量名作 key) 去访问这个 table 。虽然[
CloudBlog:2005/10/lua_table.html
Lua 的 table 效率很高]] ,但是相对于 local 变量,依然有很大的效率损失。local 变量是直接通过
Lua 的堆栈访问的。
应该尽量用 do ... end 减少函数对 local 变量的可视范围。当定义一个 function 的时候,这个 function 向上所有可见的范围的 local 变量都会被作为 upvalue 和 function 本身绑定在一起,成为一个 closure 。太多的 local 变量虽然几乎没有速度损失,但是会带来额外的内存消耗。过多的内存消耗会过早引起 gc 。