En JavaScript, le scope ressemble Ă une constitution secrĂšte qui dĂ©finit oĂč vivent les variables, avec qui elles peuvent communiquer et quelles zones leur sont strictement interdites.
Dans cet article, nous expliquons le scope avec :
- beaucoup dâexemples
- beaucoup dâhumour
- beaucoup dâastuces pratiques
- et ces moments du type : « Aaaah, donc câest ça que je comprenais mal ! »
Attache ta ceinture, â le voyage est un peu long, mais trĂšs instructif đ
đ§ Quâest-ce que le Scope ? (En langage humain)
Scope = La zone dans laquelle une variable est accessible
Autrement dit, JavaScript pose la question suivante :
« As-tu le droit dâutiliser cette variable ici ? » đźââïž
Analogie avec la vraie vie :
- Scope global â Un centre commercial ouvert Ă tout le monde đŹ
- Scope de fonction â Ta maison đ
- Scope de bloc â Une piĂšce fermĂ©e Ă clĂ© đȘ
đ 1. Scope Global â « Je suis partout »
Les variables dĂ©finies dans le scope global sont accessibles depuis nâimporte oĂč dans le fichier.
let siteName = "Code & Coffee";
function showSite() {
console.log(siteName);
}
showSite(); // Code & Coffee
đ Que se passe-t-il ici ?
siteNameest dĂ©fini en haut â scope global- AppelĂ© depuis une fonction â aucun problĂšme
â ïž Le danger du scope global
let user = "Cansu";
let user = "Ahmet"; // â SyntaxError
đ„ MĂȘme nom, mĂȘme espace â chaos immĂ©diat.
â Astuce :
- Garde le scope global aussi petit que possible
- Si ce nâest pas vraiment nĂ©cessaire â ne le rends pas global
đ 2. Scope de Fonction â « EnlĂšve tes chaussures avant dâentrer »
Les variables définies dans une fonction appartiennent uniquement à cette fonction.
function calculateAge() {
let age = 25;
console.log(age);
}
calculateAge(); // 25
console.log(age); // â ReferenceError
đ Explication :
ageest un invitĂ© danscalculateAge- Sâil essaie de sortir â porte claquĂ©e đȘ
đ§ Info pratique :
Le scope de fonction aide à garder la mémoire propre.
Moins dâaccĂšs = moins de bugs đ
đ§± 3. Scope de Bloc â « Zone privĂ©e »
Le scope de bloc est créé avec { }.let et const sont trÚs stricts à ce sujet.
if (true) {
let drink = "coffee";
const sugar = false;
console.log(drink);
}
console.log(drink); // â
đŻ Pourquoi ?
drinkexiste uniquement dans le blocif- Le monde extérieur ne le connaßt pas
đ§ Astuce de la vraie vie :
Le scope de bloc est un sauveur dans les boucles :
for (let i = 0; i < 3; i++) {
console.log(i);
}
console.log(i); // â
Sans
let,ise rĂ©pandrait partout đŹ
đ€Ą La vĂ©ritĂ© sur var â « Ancien mais problĂ©matique »
if (true) {
var mood = "happy";
}
console.log(mood); // happy
đ Pourquoi ?
varne respecte pas le scope de bloc- Il est soit dans le scope de fonction, soit il fuit vers le global
đ« Conseil JavaScript moderne :
Nâutilise pas
var. Et si tu penses en avoir besoin⊠réfléchis encore.
đ§Ź Scope Lexical â « Tu appartiens Ă lâendroit oĂč tu es Ă©crit »
JavaScript dĂ©termine le scope selon lâendroit oĂč le code est Ă©crit, pas selon lâendroit oĂč il est exĂ©cutĂ©.
function outer() {
let language = "JavaScript";
function inner() {
console.log(language);
}
inner();
}
outer(); // JavaScript
đ Explication :
innerest Ă©crit Ă lâintĂ©rieur deouter- Câest pour ça quâil peut voir
language
JavaScript dit :
« Je regarde oĂč tu es Ă©crit, pas quand tu tâexĂ©cutes. » âïž
đ Closure â « La fonction qui nâoublie jamais » đ
La closure est le cÎté romantique du scope.
function wallet() {
let money = 0;
return function () {
money += 10;
console.log(money);
};
}
const earn = wallet();
earn(); // 10
earn(); // 20
earn(); // 30
đČ Attends⊠comment ?
walleta fini de sâexĂ©cuter- Mais
moneyest toujours en vie
Parce que :
Une closure se souvient de son scope externe đ§
đ§ OĂč lâutilise-t-on ?
- Compteurs
- Données privées
- Gestion dâĂ©tat
đ§ ChaĂźne de Scope â « Logique de moteur de recherche »
Quand JavaScript cherche une variable :
- Il regarde dans le scope actuel
- Sâil ne trouve pas â le scope parent
- En dernier â le scope global
let food = "pizza";
function eat() {
console.log(food);
}
eat(); // pizza
Sâil ne trouve toujours pas :
console.log(drink); // â ReferenceError
đŠ Erreurs les plus frĂ©quentes
â Variables globales inutiles
â Attendre un scope de bloc avec var
â RĂ©utiliser les mĂȘmes noms de variables partout
â Mal comprendre les closures
â RĂšgles dâor (Ă sauvegarder)
⚠Fais de const ton choix par défaut
âš Utilise let quand une valeur doit changer
đ« Mets var Ă la retraite
⚠Définis les variables dans le scope le plus petit possible
⚠Lisibilité > Ego
đŹ Mot de la fin
Le scope est le héros caché de JavaScript.
Une fois que tu le comprends :
- Ton code devient plus propre
- Les bugs diminuent
- Tu te balades en mode : « Ouais⊠je connais JavaScript đ »

