JavaScript में string प्रकार की जाँच: एक संपूर्ण गाइड

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

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

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

«क्या यह स्ट्रिंग है?» — एक सवाल जो हर JavaScript डेवलपर को परेशान करता है

\n\n

आप कोड लिख रहे हैं, और अचानक रुक जाते हैं। वेरिएबल में शायद स्ट्रिंग होनी चाहिए, लेकिन कहीं उसमें null तो नहीं आ गया? या कोई संख्या? या, इससे भी बुरा, undefined?

\n\n

परिचित लगता है? यदि हाँ — तो आप अकेले नहीं हैं। सवाल «Check if a variable is a string in JavaScript» Stack Overflow पर दसियों हज़ार व्यूज़ के साथ सबसे लोकप्रिय प्रश्नों में से एक है। और यह कोई संयोग नहीं है: JavaScript एक डायनामिक टाइपिंग वाली भाषा है, और टाइप से संबंधित गलतियाँ अनुभवी डेवलपर्स के साथ भी होती हैं।

\n\n

इस लेख में हम यह जाँचने के सभी संभावित तरीकों पर चर्चा करेंगे कि कोई वेरिएबल स्ट्रिंग है या नहीं। आप जानेंगे:

\n
    \n
  • क्यों typeof आपका सबसे अच्छा दोस्त है (लेकिन हमेशा नहीं)
  • \n
  • कब instanceof निराश करता है
  • \n
  • «स्नाइपर» विधि Object.prototype.toString कैसे काम करती है
  • \n
  • और यदि आप लाइब्रेरी का उपयोग कर रहे हैं तो क्या करें
  • \n
\n\n

चलिए शुरू करते हैं! 🚀

\n\n

विधि #1: typeof — क्लासिक तरीका

\n\n

सबसे सरल और तेज़ तरीका typeof ऑपरेटर है। यह टाइप के नाम के साथ एक स्ट्रिंग लौटाता है:

\n\n
const name = "आलिसा";\nconst age = 25;\nconst isAdmin = true;\n\nconsole.log(typeof name);    // "string"\nconsole.log(typeof age);     // "number"\nconsole.log(typeof isAdmin); // "boolean"
\n\n

स्ट्रिंग की जाँच इस प्रकार दिखती है:

\n\n
if (typeof variable === "string") {\n  console.log("हाँ, यह एक स्ट्रिंग है!");\n}
\n\n

लाभ:

\n
    \n
  • तेज़ी से काम करता है
  • \n
  • इम्पोर्ट की आवश्यकता नहीं
  • \n
  • पढ़ने में आसान
  • \n
\n\n

नुकसान:

\n
    \n
  • प्रिमिटिव "स्ट्रिंग" और ऑब्जेक्ट new String("स्ट्रिंग") में अंतर नहीं करता
  • \n
  • null के लिए "object" लौटाता है (JavaScript की ऐतिहासिक गलती)
  • \n
\n\n

वैसे, null के बारे में — यह भाषा का एक ज्ञात बग है, जिसे पुरानी साइटों को तोड़ने से बचाने के लिए ठीक नहीं किया जाएगा। तो typeof null === "object" सामान्य है।

\n\n

और new String() के बारे में क्या?

\n\n

JavaScript में दो प्रकार की स्ट्रिंग होती हैं: प्रिमिटिव (सामान्य) और ऑब्जेक्ट (new String() के माध्यम से बनाई गई)। व्यवहार में, आप लगभग कभी new String() का उपयोग नहीं करेंगे, लेकिन इसके बारे में जानना उपयोगी है:

\n\n
const primitiveString = "नमस्ते";\nconst objectString = new String("नमस्ते");\n\nconsole.log(typeof primitiveString); // "string"\nconsole.log(typeof objectString);    // "object"
\n\n

यदि आपके कोड में कोई (या कुछ) ऑब्जेक्ट स्ट्रिंग पास करता है, तो typeof आपको गुमराह करेगा। लेकिन चिंता न करें: वास्तविक प्रोजेक्ट्स में ऐसा शायद ही कभी होता है।

\n\n

विधि #2: instanceof — ऑब्जेक्ट स्ट्रिंग के लिए

\n\n

instanceof ऑपरेटर जाँचता है कि कोई ऑब्जेक्ट किसी विशेष क्लास का इंस्टेंस है या नहीं:

\n\n
const str = new String("टेस्ट");\nconsole.log(str instanceof String); // true\n\nconst str2 = "टेस्ट";\nconsole.log(str2 instanceof String); // false — क्योंकि यह प्रिमिटिव है
\n\n

जैसा कि आप देख सकते हैं, instanceof प्रिमिटिव स्ट्रिंग के साथ काम नहीं करता। इसलिए इसका उपयोग शायद ही कभी किया जाता है — केवल तब जब आप निश्चित रूप से जानते हैं कि आप ऑब्जेक्ट के साथ काम कर रहे हैं।

\n\n

यह कब उपयोगी हो सकता है? यदि आप कोई लाइब्रेरी लिख रहे हैं जो प्रिमिटिव और ऑब्जेक्ट दोनों स्वीकार करती है। लेकिन 99% मामलों के लिए typeof पर्याप्त होगा।

\n\n

विधि #3: Object.prototype.toString.call() — सार्वभौमिक सैनिक

\n\n

यह विधि एक सच्चा स्नाइपर है। यह किसी भी डेटा प्रकार के लिए काम करती है और कभी गलती नहीं करती:

\n\n
function isString(value) {\n  return Object.prototype.toString.call(value) === "[object String]";\n}\n\nconsole.log(isString("नमस्ते"));        // true\nconsole.log(isString(new String("नमस्ते"))); // true\nconsole.log(isString(123));             // false\nconsole.log(isString(null));            // false\nconsole.log(isString(undefined));       // false
\n\n

ब्लॉग

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