Lexical Scope
JavaScript 🟡 MidDéfinition
Le scope d'une variable est déterminé par l'endroit ou elle est écrite dans le code source, pas par l'endroit ou la fonction est appelée. C'est la base des closures en JS.
Analogie
Ton adresse postale dépend d'ou tu habites, pas d'ou tu te trouves quand tu reçois le courrier.
Exemple de code
const x = 'global';
function foo() {
console.log(x); // 'global' (scope lexical)
}
function bar() {
const x = 'bar';
foo(); // affiche 'global', pas 'bar'
}
Cas d'usage
Prédire le comportement des closures et comprendre pourquoi JS n'utilise pas le dynamic scoping.
Termes liés
En entretien
Explique-moi ce qu'est le lexical scope.
C'est le fait que le scope d'une variable est déterminé par l'endroit où elle est écrite dans le code source, pas par l'endroit où la fonction est appelée. C'est comme ton adresse postale : elle dépend d'où tu habites, pas d'où tu te trouves quand tu reçois le courrier.
Dans l'exemple où bar() déclare un x local et appelle foo(), pourquoi foo() affiche 'global' et pas 'bar' ?
Parce que foo a été écrite dans le scope global, donc son scope lexical pointe toujours vers le x global, peu importe qui l'appelle. C'est la base des closures en JS et ça montre que JS n'utilise pas le dynamic scoping.
À quoi sert concrètement de bien comprendre le lexical scope ?
Ça permet de prédire le comportement des closures et de comprendre pourquoi JS résout les variables selon l'endroit où elles sont écrites. Sans ça, on devine mal quelle valeur une fonction va lire à l'exécution.
Fiche mise à jour le 2026-09-27