स्ट्रिंग

डबल कोटेशन मार्क ("), सिंगल कोटेशन मार्क (') या बैकटिक (`) के सेट के बीच में वर्णों का कोई भी सेट—अक्षर, संख्या, सिंबल वगैरह एक प्रिमिटिव होता है. आपने इस कोर्स में स्ट्रिंग के कुछ उदाहरण पहले ही देख लिए हैं: पिछले मॉड्यूल में console.log के इंस्टेंस में स्ट्रिंग प्रिमिटिव थे.

console.log( "Hello, World." );
> Hello, World.

"Hello, World." एक स्ट्रिंग प्रिमिटिव है. एक ही कोट या बैकटिक के साथ आपको एक ही नतीजा मिलता है:

console.log( 'Hello, World.' );
> Hello, World.

console.log(`Hello, World.`);
> Hello, World.

कोटेशन मार्क के अंदर रखी गई वर्णों की सीरीज़ को स्ट्रिंग लिटरल कहते हैं. डबल और सिंगल कोट एक जैसा काम करते हैं. एक कोट में दूसरा कोट, स्ट्रिंग में वर्ण के तौर पर दिख सकता है:

console.log( "I'm a string." );
> I'm a string.

console.log( '"A string," I said.' );
> "A string," I said.

स्ट्रिंग में उसी एनक्लोज़िंग कैरेक्टर का एक इंस्टेंस, जो स्ट्रिंग को "बंद" करता है. इससे गड़बड़ियां हो सकती हैं:

console.log( '"I'm a string," I said.' );
> Uncaught SyntaxError: missing ) after argument list

इससे बचने के लिए, बैकस्लैश (``) का इस्तेमाल करके कैरेक्टर को एस्केप करें:

console.log( '"I\'m a string," I said.' );
> "I'm a string," I said.

स्ट्रिंग ऑब्जेक्ट

जब फ़ंक्शन के तौर पर कॉल किया जाता है, तब String ऑब्जेक्ट, तय की गई वैल्यू को स्ट्रिंग लिटरल पर ले जाता है.

let myString = String( 10 );

myString
> "10"

typeof myString
> string

जैसा कि प्रोटोटाइप इनहेरिटेंस में बताया गया है, आपको शायद ही कभी String ऑब्जेक्ट को कंस्ट्रक्टर के तौर पर इस्तेमाल करने की ज़रूरत होगी. यह एक ऐसा स्ट्रिंग ऑब्जेक्ट बनाता है जिसमें तय की गई वैल्यू होती है. साथ ही, स्ट्रिंग लिटरल के बजाय, String ऑब्जेक्ट से पहले से मौजूद तरीकों और प्रॉपर्टी के साथ-साथ एक स्ट्रिंग ऑब्जेक्ट भी बनाया जाता है.

let stringObj = new String( "My new string." );

typeof stringObj
> object

stringObj
> String { "My new string." }

स्ट्रिंग जोड़ने की प्रोसेस

संख्याओं के बजाय स्ट्रिंग के संदर्भ में इस्तेमाल किए जाने पर, सिंगल प्लस का निशान (+), कई स्ट्रिंग वैल्यू को सिंगल स्ट्रिंग में मिलाकर, स्ट्रिंग जोड़ने वाले ऑपरेटर की तरह काम करता है:

console.log( "My" + " string." );
> My string.

स्ट्रिंग की लिटरल वैल्यू और टेंप्लेट की लिटरल वैल्यू

स्ट्रिंग प्रिमिटिव बनाने के लिए सिंगल कोट, डबल कोट, और बैकटिक का इस्तेमाल एक-दूसरे की जगह पर किया जा सकता है. हालांकि, टेंप्लेट लिटरल के बारे में बताने के लिए, बैकटिक का भी इस्तेमाल किया जा सकता है. इन्हें कभी-कभी "टेंप्लेट स्ट्रिंग" भी कहा जाता है. सिंगल या डबल कोट से बनी स्ट्रिंग लिटरल के उलट, टेंप्लेट की लिटरल वैल्यू, मल्टी-लाइन स्ट्रिंग और स्ट्रिंग इंटरपोलेशन की अनुमति देती है.

const myString = "This
is a string.";
> Uncaught SyntaxError: "" string literal contains an unescaped line break

const myString = `This
is a string.`;

console.log( myString );

> This
is a string.

टेंप्लेट लिटरल में ऐसे प्लेसहोल्डर एक्सप्रेशन हो सकते हैं जिन्हें डॉलर साइन और कर्ली ब्रेसेस (${}) से मार्क किया गया हो. ये प्लेसहोल्डर डिफ़ॉल्ट रूप से "इंटरपोलेट किए गए" होते हैं. इसका मतलब है कि एक्सप्रेशन का नतीजा, फ़ाइनल स्ट्रिंग में प्लेसहोल्डर की जगह ले लेता है.

console.log( "The result is " + ( 2 + 4 ) + "." );
> The result is 6.
console.log( `The result is ${ 2 + 4 }.` );
> The result is 6.

टेंप्लेट लिटरल वैल्यू को किसी कस्टम फ़ंक्शन में पास किया जा सकता है, ताकि टैग किया गया टेंप्लेट बनाया जा सके. यह एक ऐसा फ़ंक्शन कॉल है जो आर्ग्युमेंट के सेट के तौर पर सिंगल टेंप्लेट लिटरल का इस्तेमाल करता है. साथ ही, इसके प्लेसहोल्डर को लेखक के तय किए गए लॉजिक के आधार पर पॉप्युलेट करने की सुविधा देता है.

टैग फ़ंक्शन के पहले आर्ग्युमेंट में, स्ट्रिंग की वैल्यू का कलेक्शन होता है और बाकी आर्ग्युमेंट प्लेसहोल्डर तय करते हैं. स्ट्रिंग वैल्यू की यह कैटगरी, इसके हर प्लेसहोल्डर पर टेंप्लेट की लिटरल वैल्यू को "स्प्लिट" करके बनाई जाती है. कलेक्शन के पहले एलिमेंट में पहले प्लेसहोल्डर तक, कोई भी वर्ण शामिल होता है. वहीं, दूसरे एलिमेंट में पहले और दूसरे प्लेसहोल्डर के बीच में कोई भी वर्ण होता है. इसी तरह, दूसरे एलिमेंट में भी ऐसा ही होता है. हर प्लेसहोल्डर को टैग फ़ंक्शन को, उससे जुड़े प्लेसहोल्डर के साथ स्टैंडअलोन वैल्यू के तौर पर पास किया जाता है.

const myNoun = "template literal";

function myTagFunction( myStrings, myPlaceholder ) {
    const myInitialString = myStrings[ 0 ];
    console.log( `${ myInitialString }modified ${ myPlaceholder }.` );
}

myTagFunction`I'm a ${ myNoun }.`;
> "I'm a modified template literal."

जांचें कि आपको कितना समझ आया

वर्णों को एस्केप करने के लिए किस वर्ण का इस्तेमाल किया जाता है?

बैकस्लैश ()
डबल कोट (")
फ़ॉरवर्ड स्लैश (/)

स्ट्रिंग जोड़ने की प्रोसेस के लिए किस वर्ण का इस्तेमाल किया जाता है?

+
&
.