Variable libre

Définition, exemples et bonnes pratiques

À retenir

  • Elle n'est ni déclarée localement, ni reçue comme argument.
  • Elle est « capturée » depuis l'environnement extérieur.
  • C'est le composant essentiel pour créer des fonctions avec mémoire (closures).

Une variable libre est une donnée utilisée à l'intérieur d'un bloc de code (comme une fonction) mais qui n'y est pas définie, ni passée en tant que paramètre. C'est un peu comme si une recette de cuisine vous demandait d'ajouter du sel sans préciser d'où il vient : le sel est une « ressource libre » que l'on doit aller chercher dans le placard de la cuisine (le contexte extérieur) plutôt que sur le plan de travail local.

Étymologie

Traduction directe de l'anglais free variable. Ce concept provient de la logique mathématique et du lambda-calcul, où l'on distingue les variables « liées » (prisonnières d'une règle ou d'un paramètre) des variables « libres » (dont la valeur dépend du contexte global ou environnant).

Exemples d'usage

  • En JavaScript, une fonction qui utilise une constante déclarée juste au-dessus d'elle dans le script : la constante est libre par rapport à la fonction.
  • En Python, l'utilisation d'une variable globale à l'intérieur d'une fonction sans qu'elle soit redéfinie localement.

Cas d'usage

On rencontre ce concept principalement lors de la création de fermetures (closures), où une fonction « capture » des variables de son environnement parent pour s'en souvenir plus tard. C'est aussi un terme fondamental en théorie des langages de programmation pour analyser la portée des noms (scoping).

Bonnes pratiques

L'usage excessif de variables libres peut rendre le code difficile à tester et à comprendre, car la fonction dépend d'éléments extérieurs cachés. Il est souvent préférable de passer ces données explicitement en paramètres pour rendre la fonction « pure » et prévisible.

Synonymes

variable externe variable non liée

Antonymes

variable liée variable locale variable muette

Conseil

Si vous débutez, retenez que chaque fois qu'une fonction utilise un nom qui ne vient pas de ses parenthèses ou de son propre corps, vous manipulez une variable libre. Soyez vigilant : si cette variable change à l'extérieur, le comportement de votre fonction changera aussi !

Questions fréquentes

Quelle est la différence avec une variable globale ?

Une variable globale est un type particulier de variable libre accessible partout. Mais une variable libre peut aussi être une variable locale d'une fonction parente dans le cas de fonctions imbriquées.

Pourquoi dit-on qu'elle est libre ?

Parce qu'elle n'est pas 'attachée' (liée) à la signature de la fonction ; elle flotte dans le contexte extérieur.