Lexical Scope

JavaScript 🟡 Mid

Dé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.

#core#interview

En entretien

  1. 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.

  2. 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.

  3. À 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

← → au clavier pour passer d'une fiche à l'autre