डेटा प्रकारों का स्वचालित रूपांतरण
जैसा कि आप पहले से ही जानते हैं, जावास्क्रिप्ट में स्ट्रिंग्स को उद्धरण चिह्नों में रखा जाना चाहिए। ऐसा हो सकता है कि स्ट्रिंग के सभी वर्ण संख्याएँ हों:
let a = '123';
इस स्थिति में, चर a भी एक
स्ट्रिंग है, लेकिन एक बारीकियों के साथ।
बारीकियाँ यह है: यदि अंकों वाली स्ट्रिंग पर कोई गणितीय ऑपरेशन किया जाए - तो यह ऑपरेशन ऐसे किया जाएगा, मानो हमारे पास वास्तव में संख्याएँ हों, न कि स्ट्रिंग्स:
alert('2' * '3'); // 6 प्रदर्शित करेगा
इस मामले में, जावास्क्रिप्ट देखता है कि हम स्ट्रिंग्स के लिए अमान्य, लेकिन संख्याओं के लिए मान्य ऑपरेशन करने का प्रयास कर रहे हैं।
यह यह भी देखता है कि वास्तव में हमारी स्ट्रिंग्स - उद्धरण चिह्नों में लिखी संख्याएँ हैं। इसलिए जावास्क्रिप्ट इन स्ट्रिंग्स का संख्याओं में स्वचालित रूप से रूपांतरण करता है और उन पर संबंधित गणितीय ऑपरेशन करता है।
यह तब काम करता है, जब हमारी स्ट्रिंग्स में केवल
अंक हों। यदि उनमें एक भी अक्षर हो
- जावास्क्रिप्ट ऑपरेशन को अमान्य मानेगा
और इसका परिणाम NaN बना देगा:
alert('2' * '3s'); // NaN प्रदर्शित करेगा
इसके अलावा, स्वचालित रूपांतरण तब होता है, जब ऑपरेशन गणितीय रूप से सही हो, लेकिन स्ट्रिंग्स के लिए अमान्य हो।
उदाहरण के लिए, स्ट्रिंग्स को गुणा, भाग, घटा नहीं सकते (लेकिन संख्याओं को कर सकते हैं), इसलिए ऐसे सभी ऑपरेशनों में अंकों वाली स्ट्रिंग्स का संख्याओं में स्वचालित रूपांतरण होगा।
हालाँकि, स्ट्रिंग्स, संख्याओं की तरह, ऑपरेटर +
का उपयोग करके जोड़ी जा सकती हैं। इसका मतलब है,
कि जोड़ के मामले में स्वचालित रूपांतरण
नहीं होगा:
let a = '1' + '2';
alert(a); // '12' प्रदर्शित करेगा - स्ट्रिंग्स का जोड़ हुआ है
यदि एक योगफल संख्या है, और दूसरा - स्ट्रिंग है, तो हमेशा स्ट्रिंग जीतती है:
let a = 1 + '2';
alert(a); // '12' प्रदर्शित करेगा
ऐसे मामलों में, जावास्क्रिप्ट, इसके विपरीत, स्वचालित रूप से संख्याओं को स्ट्रिंग्स में बदल देता है और स्ट्रिंग्स का जोड़ करता है।
हालाँकि, कुछ बारीकियाँ हैं, जब योगफल दो से अधिक हों: इस मामले में किसी विशेष प्रकार में रूपांतरण ऑपरेशनों के निष्पादन क्रम पर निर्भर करता है।
निम्नलिखित उदाहरण में, पहले 2 और 3
संख्याओं के रूप में जुड़ेंगे, और फिर परिणाम स्ट्रिंग '1'
के साथ स्ट्रिंग '5' के रूप में जुड़ जाएगा,
जिसका अंतिम परिणाम स्ट्रिंग '15' होगा:
let a = '1' + (2 + 3);
alert(a); // '15' प्रदर्शित करेगा
यदि कोष्ठक हटा दिए जाएँ, तो सब कुछ
बाएँ से दाएँ जुड़ेगा। यानी पहले स्ट्रिंग '1'
में संख्या 2 जुड़ जाएगी और परिणाम
में स्ट्रिंग '12' बनेगी। फिर इस
स्ट्रिंग में संख्या 3 जुड़ जाएगी और परिणाम
में स्ट्रिंग '123' बनेगी:
let a = '1' + 2 + 3;
alert(a); // '123' प्रदर्शित करेगा
लेकिन निम्नलिखित उदाहरण में संख्याएँ 2
और 3 शुरुआत में लिखी हैं, इसलिए पहले
वे संख्याओं के रूप में जुड़ेंगी, जिसके परिणामस्वरूप
संख्या 5 मिलेगी, और फिर इस संख्या में
स्ट्रिंग '1' जुड़ जाएगी, जिसके अंत में स्ट्रिंग '51' मिलेगी:
let a = 2 + 3 + '1';
alert(a); // '51' प्रदर्शित करेगा
कोड चलाए बिना निर्धारित करें कि स्क्रीन पर क्या प्रदर्शित होगा:
let a = '5' + '2';
alert(a);
कोड चलाए बिना निर्धारित करें कि स्क्रीन पर क्या प्रदर्शित होगा:
let a = '5' + 2;
alert(a);
कोड चलाए बिना निर्धारित करें कि स्क्रीन पर क्या प्रदर्शित होगा:
let a = 5 + '2';
alert(a);
कोड चलाए बिना निर्धारित करें कि स्क्रीन पर क्या प्रदर्शित होगा:
let a = 5 + 2;
alert(a);
कोड चलाए बिना निर्धारित करें कि स्क्रीन पर क्या प्रदर्शित होगा:
let a = '5' * '2';
alert(a);
कोड चलाए बिना निर्धारित करें कि स्क्रीन पर क्या प्रदर्शित होगा:
let a = '5' - '2';
alert(a);
कोड चलाए बिना निर्धारित करें कि स्क्रीन पर क्या प्रदर्शित होगा:
let a = '5' / '2';
alert(a);
कोड चलाए बिना निर्धारित करें कि स्क्रीन पर क्या प्रदर्शित होगा:
let a = '5' % '2';
alert(a);
कोड चलाए बिना निर्धारित करें कि स्क्रीन पर क्या प्रदर्शित होगा:
let a = '5s' * '2';
alert(a);
कोड चलाए बिना निर्धारित करें कि स्क्रीन पर क्या प्रदर्शित होगा:
let a = '5s' + '2';
alert(a);
कोड चलाए बिना निर्धारित करें कि स्क्रीन पर क्या प्रदर्शित होगा:
let a = (-'5') + (-'2');
alert(a);
कोड चलाए बिना निर्धारित करें कि स्क्रीन पर क्या प्रदर्शित होगा:
let a = '5' * 1 + '2' * 1;
alert(a);
कोड चलाए बिना निर्धारित करें कि स्क्रीन पर क्या प्रदर्शित होगा:
let a = '5' * '1' + '2' * '1';
alert(a);
कोड चलाए बिना निर्धारित करें कि स्क्रीन पर क्या प्रदर्शित होगा:
let a = '' + 3 + 1;
alert(a);