परिचय
ब्लॉक स्कोप दो कर्ली ब्रेसेस { } के बीच का क्षेत्र होता है - जो लूप्स, if कंडीशन्स, स्विच स्टेटमेंट्स, या स्टैंडअलोन ब्लॉक्स में हो सकता है। ES2015 में पेश किए गए let और const हमें ब्लॉक-स्कोप्ड वेरिएबल्स बनाने की अनुमति देते हैं जिन्हें केवल उन ब्लॉक्स के अंदर एक्सेस किया जा सकता है।
उदाहरण
निम्न कोड जावास्क्रिप्ट में ब्लॉक स्कोपिंग दिखाता है:
<!DOCTYPE html> <html lang="hi"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>ब्लॉक स्कोपिंग</title> <style> body { font-family: "Segoe UI", Tahoma, Geneva, Verdana, sans-serif; } .result { font-size: 20px; font-weight: 500; } </style> </head> <body> <h1>जावास्क्रिप्ट में ब्लॉक स्कोपिंग</h1> <div style="color: green;" class="result"></div> <button class="Btn">यहाँ क्लिक करें</button> <h3> ब्लॉक के अंदर और बाहर वेरिएबल एक्सेस करने के लिए ऊपर दिए गए बटन पर क्लिक करें </h3> <script> const resEle = document.querySelector(".result"); document.querySelector(".Btn").addEventListener("click", () => { let b = 44; { // नया ब्लॉक स्कोप let a = 22; } resEle.innerHTML = 'अपने ब्लॉक के अंदर वेरिएबल एक्सेस करना b = ' + b + '<br>'; try { a; // ReferenceError: a is not defined } catch (err) { resEle.innerHTML += 'अपने ब्लॉक के बाहर वेरिएबल एक्सेस करना a = ' + err.message; } }); </script> </body> </html>
आउटपुट
उपरोक्त कोड निम्न आउटपुट उत्पन्न करेगा:

'यहाँ क्लिक करें' बटन पर क्लिक करने पर:

स्कोप तुलना
| कीवर्ड | स्कोप | होइस्टिंग | रीअसाइनमेंट |
|---|---|---|---|
var | फंक्शन | हां (undefined से इनिशियलाइज़्ड) | ✅ |
let | ब्लॉक | हां (TDZ - अनइनिशियलाइज़्ड) | ✅ |
const | ब्लॉक | हां (TDZ - अनइनिशियलाइज़्ड) | ❌ |
टेम्पोरल डेड ज़ोन (TDZ)
let/const वेरिएबल्स अपने स्कोप की शुरुआत से लेकर घोषणा तक TDZ में होते हैं। TDZ में एक्सेस करने पर ReferenceError फेंकता है।
लूप्स में ब्लॉक स्कोप
for (let i = 0; i < 3; i++) {
setTimeout(() => console.log(i), 100); // 0, 1, 2 प्रिंट करता है
}
// var के साथ होता: 3, 3, 3 (क्लोजर इश्यू)