जावास्क्रिप्ट में undefined: जाँच के 5 तरीके (और कौन सा चुनें)

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

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

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

«Uncaught ReferenceError» — आपका पहला दुश्मन? जावास्क्रिप्ट में undefined को सही ढंग से जाँचना सीखें

\n\n

जिसने भी जावास्क्रिप्ट में कम से कम दो पंक्तियाँ लिखी हैं, वह रहस्यमय undefined से मिला है। यह सिर्फ «खाली जगह» नहीं है — यह अपने स्वयं के मान के साथ एक पूर्ण डेटा प्रकार है। लेकिन इसे सही तरीके से कैसे पकड़ें? यदि आपने «How can I check for undefined in JavaScript» गूगल किया है, तो आप अकेले नहीं हैं: इस प्रश्न ने Stack Overflow पर सैकड़ों हज़ारों व्यूज़ एकत्र किए हैं। समस्या यह है कि JS में जाँच के कई तरीके हैं, और प्रत्येक में छिपे हुए नुकसान हैं।

\n\n

इस लेख में, हम 5 दृष्टिकोणों को समझेंगे, सरल से जटिल तक, उनके प्रदर्शन और विश्वसनीयता की तुलना करेंगे, और पता लगाएंगे कि 2025 में कौन सी विधि का उपयोग करना चाहिए। चलिए शुरू करते हैं!

\n\n

वास्तव में undefined क्या है?

\n\n

जाँच करने से पहले, आइए शर्तों पर सहमत हों। undefined एक आदिम मान है जो एक वेरिएबल को दिया जाता है यदि इसे घोषित किया गया है लेकिन प्रारंभ नहीं किया गया है:

\n\n
let a;\nconsole.log(a); // undefined\n
\n\n

महत्वपूर्ण: undefined ≠ null ≠ not defined। null एक जानबूझकर «कुछ नहीं» है, जबकि not defined (ReferenceError) तब होता है जब वेरिएबल बिल्कुल घोषित नहीं किया गया है। सही जाँच चुनने के लिए ये बारीकियाँ महत्वपूर्ण हैं।

\n\n

विधि #1: typeof ऑपरेटर — स्वर्ण मानक?

\n\n

सबसे लोकप्रिय और सुरक्षित तरीका typeof का उपयोग करना है:

\n\n
if (typeof x === 'undefined') {\n  console.log('x परिभाषित नहीं है');\n}\n
\n\n

यह अघोषित वेरिएबल के लिए भी क्यों काम करता है? typeof कभी भी ReferenceError नहीं फेंकता। यदि वेरिएबल मौजूद नहीं है, तो यह बस स्ट्रिंग "undefined" लौटाता है।

\n\n

लाभ:

\n
    \n
  • अघोषित वेरिएबल के लिए सुरक्षित
  • \n
  • पढ़ने योग्य और समझने योग्य कोड
  • \n
  • सभी ब्राउज़रों और वातावरणों (Node.js, Deno) में काम करता है
  • \n
\n\n

नुकसान:

\n
    \n
  • बार-बार उपयोग के लिए थोड़ा लंबा
  • \n
  • शुरुआती लोगों को भ्रमित कर सकता है (स्ट्रिंग तुलना)
  • \n
\n\n

निर्णय: वैश्विक जाँच और उन मामलों के लिए सबसे अच्छा विकल्प जहाँ वेरिएबल घोषित नहीं हो सकता है।

\n\n

विधि #2: undefined के साथ सख्त तुलना (===)

\n\n

दूसरा सबसे लोकप्रिय तरीका सीधे मान की तुलना करना है:

\n\n
if (x === undefined) {\n  console.log('x undefined के बराबर है');\n}\n
\n\n

यहाँ एक बारीकी है: वेरिएबल घोषित होना चाहिए। यदि x मौजूद नहीं है, तो आपको ReferenceError मिलेगा। इसलिए ऐसा कोड केवल इसके लिए सुरक्षित है:

\n
    \n
  • ऑब्जेक्ट के गुण (obj.prop === undefined)
  • \n
  • फ़ंक्शन के पैरामीटर
  • \n
  • let, const या var के माध्यम से घोषित वेरिएबल
  • \n
\n\n

छिपा हुआ नुकसान: वैश्विक undefined

\n

पुराने ब्राउज़रों (IE 8 और उससे नीचे) में undefined को ओवरराइट किया जा सकता था:

\n
undefined = 'अब मैं एक स्ट्रिंग हूँ'; // बुरा सपना!\n
\n

अब यह असंभव है (सख्त मोड में), लेकिन यदि आप लीगेसी कोड का समर्थन करते हैं — तो typeof का उपयोग करना बेहतर है।

\n\n

निर्णय: स्थानीय वेरिएबल और ऑब्जेक्ट गुणों के लिए उत्कृष्ट विधि। तेज़ और संक्षिप्त।

\n\n

विधि #3: void ऑपरेटर

\n\n

एक कम ज्ञात लेकिन सुरुचिपूर्ण तरीका void 0 है:

\n\n
if (x === void 0) {\n  console.log('x undefined है');\n}\n
\n\n

void ऑपरेटर एक अभिव्यक्ति का मूल्यांकन करता है और undefined लौटाता है। void 0 वैश्विक वेरिएबल से स्वतंत्र, शुद्ध undefined प्राप्त करने का सबसे छोटा तरीका है।

\n\n

यह कब उपयोगी है?

\n
    \n
  • मिनिफाइड कोड में (बाइट्स बचाता है)
  • \n
  • लाइब्रेरीज़ में जहाँ undefined को ओवरराइट करने से सुरक्षा महत्वपूर्ण है
  • \n
  • फंक्शनल प्रोग्रामिंग में (उदाहरण के लिए, प्रॉमिस चेन में)
  • \n
\n\n

नुकसान: अजीब लगता है

ब्लॉग

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