Variables

Las variables son lugares que almacenan valores. Existen tres tipos de variables en Lua: variables globales, variables locales y campos de tabla.

Un mismo nombre puede designar una variable global o una variable local (o el parámetro formal de una función, que es un tipo particular de variable local):
var ::= Name

El nombre denota identificadores.

Cualquier variable se asume como global a menos que se declare explícitamente como local . Las variables locales tienen un ámbito léxico: las funciones definidas dentro de su ámbito pueden acceder libremente a las variables locales.

Antes de la primera asignación a una variable, su valor es nulo.

Los corchetes se utilizan para indexar una tabla:
var ::= prefixexp `[´ exp `]´
La sintaxis ' var.Name es sólo azúcar sintáctico para ' var["Name"]:
var ::= prefixexp `.´ Name

Todas las variables globales viven como campos en tablas Lua ordinarias, llamadas tablas de entorno o simplemente entornos. Cada función tiene su propia referencia a un entorno, de modo que todas las variables globales en esta función se referirán a esta tabla de entorno. Cuando se crea una función, hereda el entorno de la función que la creó. Para obtener la tabla de entorno de una función Lua, se llama a getfenv. Para sustituirlo, se llama a setfenv.

Un acceso a una variable global ' x equivale a ' _env.x, donde ' _env ' es el entorno de la función en ejecución. (La variable ' _env ' no es accesible en Lua. Los utilizamos aquí sólo con fines explicativos)