जावास्क्रिप्ट में वेरिएबल मौजूद है या नहीं, इसकी जांच कैसे करें: पूर्ण गाइड

शुरुआती लोगों के लिए ऑनलाइन Python प्रशिक्षक

Python आसानी से सीखें बिना सिद्धांत के बोझ के। स्वचालित जांच के साथ व्यावहारिक कार्य हल करें और ब्राउज़र में सीधे कोड लिखें।

पाठ्यक्रम शुरू करें

वेरिएबल है, लेकिन जैसे हो ही नहीं? जावास्क्रिप्ट में जांच को समझते हैं

\n\n

क्या आपने कभी कोई स्क्रिप्ट लिखी, उसे चलाया, और अचानक — धमाका! — ब्राउज़र कंसोल Uncaught ReferenceError: myVar is not defined के साथ लाल हो गया? परिचित लगता है। या इसके विपरीत: वेरिएबल घोषित है, लेकिन आप सुनिश्चित नहीं हैं कि इसे कोई मान दिया गया है या नहीं। जावास्क्रिप्ट में, ये दो अवधारणाएँ ("मौजूद है" और "आरंभिक है") अक्सर अनुभवी डेवलपर्स द्वारा भी भ्रमित की जाती हैं।

\n\n

इस गाइड में, हम एक बार और हमेशा के लिए समझेंगे कि जावास्क्रिप्ट में वेरिएबल मौजूद है या नहीं, इसकी सही तरीके से जांच कैसे करें, "परिभाषित" और "आरंभिक" में क्या अंतर है, और undefined और ReferenceError से संबंधित 90% त्रुटियों से कैसे बचें। चलिए शुरू करते हैं!

\n\n

संक्षेप में मुख्य बात: "वेरिएबल मौजूद है" का क्या मतलब है?

\n\n

जावास्क्रिप्ट में, एक वेरिएबल की तीन अवस्थाएँ होती हैं:

\n\n
    \n
  • घोषित नहीं (undeclared) — वेरिएबल मेमोरी में बिल्कुल मौजूद नहीं है। इसे एक्सेस करने का प्रयास ReferenceError देगा।
  • \n
  • घोषित, लेकिन आरंभिक नहीं (declared, but undefined) — हमने let x; या var y; लिखा है, लेकिन कोई मान नहीं दिया है। वेरिएबल मौजूद है, इसका प्रकार undefined है।
  • \n
  • घोषित और आरंभिक (declared and initialized) — वेरिएबल का एक विशिष्ट मान है (संख्या, स्ट्रिंग, ऑब्जेक्ट, आदि)।
  • \n
\n\n

Stack Overflow पर अधिकांश प्रश्न (और वहाँ हजारों हैं) एक ही बात पर आते हैं: "मैं कैसे जानूँ कि वेरिएबल एक्सेस करने पर त्रुटि नहीं देगा?" उत्तर — typeof का उपयोग करें। लेकिन इसमें कुछ बारीकियाँ हैं। आइए समझते हैं।

\n\n

तरीका नं. 1. typeof ऑपरेटर — आपका मुख्य मित्र

\n\n

जावास्क्रिप्ट में वेरिएबल परिभाषित है या नहीं, यह जांचने का सबसे विश्वसनीय और सुरक्षित तरीका typeof ऑपरेटर है। इसका मुख्य लाभ: यह कभी भी त्रुटि नहीं फेंकता, भले ही वेरिएबल घोषित न हुआ हो।

\n\n

अघोषित वेरिएबल के लिए उदाहरण

\n\n
// वेरिएबल myVar घोषित नहीं है\nif (typeof myVar !== 'undefined') {\n    console.log('वेरिएबल मौजूद है!');\n} else {\n    console.log('वेरिएबल मौजूद नहीं है या इसका मान undefined है');\n}\n// आउटपुट: "वेरिएबल मौजूद नहीं है या इसका मान undefined है"
\n\n

ध्यान दें: typeof अघोषित वेरिएबल और घोषित लेकिन आरंभिक न किए गए वेरिएबल (let x;) दोनों के लिए स्ट्रिंग 'undefined' लौटाता है। यह अच्छा भी है और बुरा भी। अच्छा — क्योंकि हम त्रुटि नहीं पकड़ते। बुरा — क्योंकि हम इन दोनों मामलों में अंतर नहीं कर पाते।

\n\n

घोषित लेकिन खाली वेरिएबल के लिए उदाहरण

\n\n
let myVar; // घोषित, लेकिन आरंभिक नहीं\nconsole.log(typeof myVar); // "undefined" — यह भी undefined है!\n\nif (typeof myVar !== 'undefined') {\n    console.log('वेरिएबल मौजूद है और इसका एक मान है');\n} else {\n    console.log('वेरिएबल undefined है (या तो घोषित नहीं है या आरंभिक नहीं है)');\n}
\n\n

निष्कर्ष: typeof एक आदर्श समाधान है यदि आपको केवल ReferenceError से बचना है। यदि आपको "घोषित नहीं" और "खाली" के बीच अंतर करना है — तो आगे पढ़ें।

\n\n

तरीका नं. 2. window के माध्यम से जांच (ग्लोबल कॉन्टेक्स्ट)

\n\n

यदि आप ब्राउज़र में काम कर रहे हैं और वेरिएबल ग्लोबल रूप से (var या अप्रत्यक्ष रूप से) घोषित किया गया है, तो यह window ऑब्जेक्ट की एक प्रॉपर्टी बन जाता है। यह वेरिएबल के अस्तित्व की जांच के लिए अतिरिक्त संभावनाएँ खोलता है।

\n\n

in ऑपरेटर का उपयोग

\n\n
// ग्लोबल वेरिएबल\nvar globalVar = 42;\n\nconsole.log('globalVar' in window); // true\nconsole.log('nonExistentVar' in window); // false
\n\n

यह विधि केवल var के माध्यम से या बिना कीवर्ड के असाइन किए गए ग्लोबल वेरिएबल के लिए काम करती है। let और const window ऑब्जेक्ट की प्रॉपर्टी नहीं बनाते (वे ब्लॉक स्कोप में रहते हैं)।

\n\n

उपयो

ब्लॉग

पुस्तक अनुशंसाएँ