# Portée

> Zone du code où une variable est accessible et reconnue ; en JavaScript, elle dépend du mot-clé de déclaration utilisé et de l'endroit où il apparaît.

- Auteur : Clément Hadrot
- Publié le : 2026-09-25
- Mis à jour le : 2026-09-25
- URL : https://wpmoderne.dev.wordpress-developpement.fr/lexique/portee-js/

Chaque variable vit dans un territoire délimité : en dehors de ce territoire, elle devient invisible ou inexistante. C'est ce territoire que l'on appelle la portée, et il détermine où une variable peut être lue ou modifiée sans provoquer d'erreur.

## Trois niveaux à connaître

Une variable déclarée avec `var` a une portée de fonction ; avec `let` ou `const`, elle a une portée de bloc, limitée aux accolades `{ }` où elle apparaît. Dans un script de thème WordPress qui manipule plusieurs blocs de contenu en boucle, bien choisir sa portée évite qu'une variable d'une itération n'interfère avec une autre.

## Exemple

```
for (let i = 0; i < 3; i++) {
  setTimeout(() => console.log(i), 100);
}
// Affiche 0, 1, 2

for (var j = 0; j < 3; j++) {
  setTimeout(() => console.log(j), 100);
}
// Affiche 3, 3, 3
```

Avec `let`, chaque tour de boucle crée sa propre portée pour `i` ; avec `var`, une seule variable partagée est modifiée par toutes les itérations avant l'exécution différée du `setTimeout`.

## À ne pas confondre avec la fermeture

- La portée définit où une variable est visible ; la fermeture (closure) désigne la capacité d'une fonction à « se souvenir » des variables de la portée où elle a été créée, même après que cette portée a techniquement pris fin.
- La portée globale, accessible partout, est à limiter au strict nécessaire : trop de variables globales augmentent le risque de collision de noms entre scripts, notamment entre plugins WordPress chargés sur la même page.
- Un linter configuré en mode strict signale généralement toute variable utilisée sans déclaration explicite, symptôme d'une fuite vers la portée globale.
