La portée lexicale, également connue sous le nom de portée statique, est le type de portée que JavaScript utilise. La portée lexicale signifie que les variables sont résolues en fonction de leur position dans le code source, et non de la structure des appels de fonctions au moment de l'exécution.
Une variable définie en dehors d'une fonction est appelée une variable globale et est accessible à partir de n'importe quelle partie du code. En revanche, une variable définie à l'intérieur d'une fonction n'est accessible que dans cette fonction et dans toute fonction interne imbriquée ; autrement dit, le contexte est défini par sa position dans le code.
Considérez cet extrait de code pour un exemple :
var x = 1; // x est globale
function outer() {
var y = 2; // y est locale à outer
function inner() {
var z = 3; // z est locale à inner
console.log(z); // 3
console.log(y); // 2
console.log(x); // 1
}
inner();
}
outer();
Ici, la fonction inner()
a accès à ses propres variables locales, celle de la fonction outer()
, et la variable globale x. C'est grâce à la portée lexicale de JavaScript.
Manier correctement la portée des variables en JavaScript est crucial pour écrire un code propre et éviter les bugs. Il est préférable de définir les variables dans l'espace le plus restreint possible afin d'éviter les conflits ou la surcharge sur l'espace global.
De plus, l'ES6 (ECMAScript 2015) a introduit les variables let
et const
, qui offrent une portée de bloc plus prévisible que var
, permettant un contrôle plus précis de la portée des variables.
Ainsi, comprendre le fonctionnement de la portée lexicale en JavaScript vous permet d'écrire un code plus efficace, plus sûr et plus facile à déboguer.