Day 8 Scope & Closures
Scope define karta hai ke variable kahan se accessible hai. Yeh concept bahut important hai bugs avoid karne ke liye.
Global vs Local Scope
Global variables sab jagah accessible hain, local variables sirf us function mein.
let globalVar = "I am global"; // Global
function myFunction() {
let localVar = "I am local"; // Local
console.log(globalVar); // ✅ Accessible
console.log(localVar); // ✅ Accessible
}
myFunction();
console.log(globalVar); // ✅ Works
// console.log(localVar); // ❌ ReferenceError!
Block Scope (let & const)
let aur const block mein hi available hote hain — { } ke andar.
if (true) {
let blockScoped = "only here";
var functionScoped = "everywhere"; // bad!
console.log(blockScoped); // ✅
}
// console.log(blockScoped); // ❌ ReferenceError
console.log(functionScoped); // ✅ (problematic!)
Closures
Function apne outer scope ko yaad rakhta hai — yeh closure hai.
function makeCounter() {
let count = 0; // private variable
return function() {
count++;
return count;
};
}
const counter = makeCounter();
console.log(counter()); // 1
console.log(counter()); // 2
console.log(counter()); // 3
// Dono counters independent hain!
const counter2 = makeCounter();
console.log(counter2()); // 1
🎯 Practice Challenge
makeMultiplier(factor) function banao jo ek function return kare. Phir times2 = makeMultiplier(2) banao aur test karo.