Day 8

Scope & Closures

12 min
JavaScript 100 Days

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.

scope.js
javascript
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.

block.js
javascript
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.

closure.js
javascript
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.