Variables
Les variables sont des endroits où sont stockées des valeurs. Il existe trois types de variables en Lua : les variables globales, les variables locales et les champs de table.
var ::= Name
Le nom indique les identifiants.
Toute variable est supposée être globale, sauf si elle est explicitement déclarée comme locale. Les variables locales sont à portée lexicale: les fonctions définies à l'intérieur de leur portée peuvent accéder librement aux variables locales.
Avant la première affectation à une variable, sa valeur est nulle.
var ::= prefixexp `[´ exp `]´
var.Name n'est que du sucre syntaxique pour " var["Name"]:var ::= prefixexp `.´ Name
Toutes les variables globales sont des champs des tables Lua ordinaires, appelées tables d'environnement ou simplement environnements. Chaque fonction possède sa propre référence à un environnement, de sorte que toutes les variables globales de cette fonction feront référence à cette table d'environnement. Lorsqu'une fonction est créée, elle hérite de l'environnement de la fonction qui l'a créée. Pour obtenir la table d'environnement d'une fonction Lua, vous appelez getfenv. Pour le remplacer, il faut appeler setfenv.
Un accès à une variable globale " x est équivalent à " _env.x, où " _env est l'environnement de la fonction en cours d'exécution. (La variable '_env n'est pas accessible en Lua. Nous ne les utilisons ici qu'à des fins explicatives)