Variablen
Werte werden in Variablen gespeichert. In Lua gibt es drei Arten von Variablen: globale Variablen, lokale Variablen und Tabellenfelder.
var ::= Name
Der Name bezeichnet die Identifikatoren.
Es wird davon ausgegangen, dass jede Variable global ist, sofern sie nicht ausdrücklich als lokal deklariert ist. Lokale Variablen sind lexikalisch skaliert: Auf lokale Variablen können Funktionen, die innerhalb ihres Geltungsbereichs definiert sind, frei zugreifen.
Bevor die erste Zuweisung für eine Variable erfolgt, ist ihr Wert null.
var ::= prefixexp `[´ exp `]´
var.Name ist lediglich syntaktischer Zucker für var["Name"]:var ::= prefixexp `.´ Name
Alle globalen Variablen sind als Felder in normalen Lua-Tabellen vorhanden, die als Umgebungstabellen oder einfach Umgebungen bezeichnet werden. Jede Funktion hat ihren eigenen Verweis auf eine Umgebung, so dass alle globalen Variablen in dieser Funktion auf diese Umgebungstabelle verweisen. Wenn eine Funktion erstellt wird, übernimmt sie die Umgebung aus der Funktion, von der sie erstellt wurde. Zum Abrufen der Umgebungstabelle einer Lua-Funktion rufen Sie 'getfenv' auf. Um sie zu ersetzen, rufen Sie 'setfenv' auf.
Ein Zugriff auf eine globale Variable x ist äquivalent zu _env.x; dabei ist _env die Umgebung der aktiven Funktion. (Auf die Variable _env kann in Lua nicht zugegriffen werden. Sie wird hier nur zu Erläuterungszwecken verwendet.)