Variables
Las variables son lugares que almacenan valores. Existen tres tipos de variables en Lua: variables globales, variables locales y campos de tabla.
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.
var ::= prefixexp `[´ exp `]´
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)