🔍 JavaScript Scope : « Je suis lĂ  — mais est-ce que tu peux me voir ? »

🔍 JavaScript Scope : « Je suis lĂ  — mais est-ce que tu peux me voir ? »

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 ?

  • siteName est 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 :

  • age est un invitĂ© dans calculateAge
  • 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 ?

  • drink existe uniquement dans le bloc if
  • 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, i se rĂ©pandrait partout 😬


đŸ€Ą La vĂ©ritĂ© sur var – « Ancien mais problĂ©matique »

if (true) {
  var mood = "happy";
}

console.log(mood); // happy

😐 Pourquoi ?

  • var ne 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 :

  • inner est Ă©crit Ă  l’intĂ©rieur de outer
  • 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 ?

  • wallet a fini de s’exĂ©cuter
  • Mais money est 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 :

  1. Il regarde dans le scope actuel
  2. S’il ne trouve pas → le scope parent
  3. 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 😎 »

Comments

No comments yet. Why don’t you start the discussion?

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile ißaretlenmißlerdir