3.2 - 变量
变量是存储值的地方。Lua中有三种变量:全局变量、局部变量和表属性。
一个的单独名称可以表示全局变量或局部变量(或者是函数的形参,是一种特殊的局部变量):
var ::= Name
这里的名称指的是标识符(参见3.1)。
除非显式声明为局部变量,否则任何变量名都被认为是全局的。局部变量是相对于词法作用域(lexically scoped) 下的:局部变量可以被其定义范围下的函数访问(参见3.5)。
在第一次给变量赋值之前,其值为nil。
方括号被用于索引一个表:
var ::= prefixexp ‘[’ exp ‘]’
可以通过元表来改变访问表属性的意义(参见2.4)。
var.Name语法只是var["Name"]的语法糖。
var ::= prefixexp ‘.’ Name
访问全局变量x相当于_ENV.x。由于代码块的编译方式,变量_ENV本身永远不会是全局的(参见2.2)。