5 मिनट पढ़ें · मुफ़्त · बिना लॉगिन
स्कोप (Scope) एक ही सवाल का जवाब है: आपके कोड में variable कहाँ दिखता है? फ़ंक्शन के अंदर बनाया गया variable सिर्फ उसी फ़ंक्शन के अंदर इस्तेमाल हो सकता है। सभी फ़ंक्शन्स के बाहर बनाया गया variable कहीं भी इस्तेमाल हो सकता है। गाँव और घर की तरह सोचें: गाँव के चौक में कही गई बात (global) सबको पता होती है, लेकिन एक घर के अंदर कही गई बात (local) सिर्फ उस घर के लोगों को सुनाई देती है।
स्कोप इसलिए ज़रूरी है क्योंकि यह आपके कोड को खुद से टकराने से रोकता है। दो फ़ंक्शन दोनों total नाम का variable इस्तेमाल कर सकते हैं, बिना टकराव के — जब तक हर total अपने फ़ंक्शन के अंदर local है। स्कोप के बिना हर नाम global होता, और बड़े प्रोग्राम में गलत overwrite से सब गड़बड़ हो जाता।
किसी भी फ़ंक्शन के बाहर बनाया गया variable global होता है। हर फ़ंक्शन और पेज की हर script उसे पढ़ सकती है और बदल सकती है। Global सुविधाजनक होते हैं, लेकिन खतरनाक भी — आपके कोड का कोई भी हिस्सा उन्हें गलती से बदल सकता है, और फिर bug वहाँ से बहुत दूर जाकर दिखाई देता है जहाँ वह हुआ था। Professional कोड में जितना हो सके, उतने कम global इस्तेमाल होते हैं।
let chaiPrice = 10; // global — हर फ़ंक्शन इसे देख सकता है
function chaiBill(cups) {
return cups * chaiPrice;
}
फ़ंक्शन के अंदर बनाया गया variable उस फ़ंक्शन के लिए local होता है। वह तब बनता है जब फ़ंक्शन चलता है, और जब फ़ंक्शन खत्म होता है तो वह मिट जाता है। फ़ंक्शन के बाहर से कोई उसे नहीं देख सकता — बाहर से उसे पढ़ने की कोशिश करने पर ReferenceError मिलता है।
function greet() {
let message = "Namaste!"; // local — सिर्फ greet() इसे देख सकता है
return message;
}
greet();
console.log(message); // Error! यहाँ message defined नहीं है
यह कोई bug नहीं, एक सुविधा है। फ़ंक्शन के private variables उसकी अपनी कार्यशाला हैं। जब वह खत्म होता है, कार्यशाला साफ़ हो जाती है, और नाम दूसरे फ़ंक्शन्स के इस्तेमाल के लिए खाली हो जाते हैं।
return के कुछ बाहर नहीं निकलता।Block का मतलब है घुँघराले कोष्ठकों { } के बीच का कोड, जैसे if या loop का body। let या const से बनाए गए variables block-scoped होते हैं: वे सिर्फ उसी block के अंदर मौजूद रहते हैं। पुराने var से बनाए गए variables block को नज़रअंदाज़ करते हैं और पूरे फ़ंक्शन में दिखते हैं। यही एक बड़ी वजह है कि आधुनिक कोड var की जगह let और const को पसंद करता है।
if (true) {
let a = 5; // सिर्फ इस if-block के अंदर
var b = 6; // पूरे फ़ंक्शन में दिखता है
}
console.log(a); // Error!
console.log(b); // 6 — var block से बाहर निकल आया
JavaScript कोड चलाने से पहले declarations को उनके scope के ऊपर ले जाता है — इसे hoisting कहते हैं। var वाला variable ऊपर उठाया जाता है और undefined से शुरू होता है, इसलिए उसे जल्दी इस्तेमाल करने पर error की जगह उलझाने वाला undefined मिलता है। let या const वाला variable भी ऊपर उठाया जाता है, लेकिन अपनी लाइन चलने तक वह "temporal dead zone" में रहता है — उसे जल्दी इस्तेमाल करने पर साफ़ error मिलता है। व्यावहारिक नियम आसान है: अपने variables को हमेशा उनके scope के ऊपर declare करें, और let और const को पसंद करें।
ReferenceError: message is not defined पाना।if या loop के अंदर var इस्तेमाल करना और यह देखकर हैरान होना कि variable उसके बाद भी दिख रहा है।let, const या var लिखे बिना total = 5 लिखना एक global बना देता है।let और const block-scoped होते हैं; var function-scoped होता है और block से बाहर निकल सकता है।let chaiPrice = 10; — एक global variable, सभी फ़ंक्शन्स के बाहर declare किया गया। पेज के दोनों button इसे देख सकते हैं।function showGlobal() { ... } — फ़ंक्शन के अंदर से global chaiPrice को पढ़ता है। यह काम करता है, क्योंकि फ़ंक्शन बाहर की ओर देख सकते हैं।let message = "Only inside this function"; — showLocal() के अंदर एक local variable। यह सिर्फ तब तक मौजूद रहता है जब तक वह फ़ंक्शन चल रहा है।document.getElementById("out").innerHTML = message; — यह लाइन फ़ंक्शन के अंदर है, इसलिए यह local variable को पढ़ सकती है। फ़ंक्शन के बाहर यही लाइन fail हो जाती।var leaked = "I escaped the block"; — if block के अंदर var से declare किया गया, यह block खत्म होने के बाद भी दिखता है। उसी जगह let होता तो नहीं दिखता।<!DOCTYPE html>
<html>
<head>
<title>Scope — Global vs Local</title>
<style>
body { font-family: Verdana, sans-serif; background-color: #fff8e1; }
h1 { color: #1e3a5f; }
.box { background-color: white; border: 2px solid #1e3a5f; padding: 14px; margin: 10px 0; width: 340px; }
button { background-color: #04aa6d; color: white; padding: 10px 18px; border: none; margin: 4px; }
</style>
</head>
<body>
<h1>Scope — Global vs Local</h1>
<div class="box">
<p>Global chai price: ₹10 (every function can see it)</p>
<p>Local message: only inside its function</p>
</div>
<button onclick="showGlobal()">Show Global Price</button>
<button onclick="showLocal()">Show Local Message</button>
<p id="out">Click a button to see what each scope can reach.</p>
<script>
let chaiPrice = 10;
function showGlobal() {
document.getElementById("out").innerHTML = "Global price is ₹" + chaiPrice;
}
function showLocal() {
let message = "Only inside this function";
document.getElementById("out").innerHTML = message;
}
if (true) {
var leaked = "I escaped the block";
}
</script>
</body>
</html>
नीचे दिया गया कोड बदलें और चलाएँ दबाएँ — परिणाम तुरंत दिखेगा। कोई फाइल सहेजनी नहीं है, कोई लॉगिन नहीं चाहिए।
AI आपके लिए कोड लिख सकता है, लेकिन वह आपके लिए सोच नहीं सकता। जब आप HTML खुद सीखते हैं, तो आपका दिमाग असली कौशल बनाता है: आप समझते हैं कि पेज ऐसा क्यों दिखता है, टूटने पर उसे ठीक कर सकते हैं, और परीक्षा या इंटरव्यू में बिना मदद के जवाब दे सकते हैं। यही कौशल नौकरी दिलाता है — कॉपी किया हुआ जवाब नहीं।
सभी 30 पाठ पूरे करें, टेस्ट पास करें (80%), ₹10 दें और अपना सर्टिफिकेट पाएँ।
टेस्ट देंदेखकर सीखना पसंद है? वीडियो कोर्स में वही विषय एक-एक करके सिखाए जाते हैं।
Free tutorials teach you the basics. Our paid courses add live projects, mentorship and a certificate.
Browse all coursesAsk about courses, website & more
Request human callback:
Download karne ke liye login karo. Login ke baad yahi page pe rahoge!
Naya ho? Register karo →