Skip to content

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)。