কম্পিউটার টিউটোরিয়াল

জাভাস্ক্রিপ্ট: % অপারেটর স্ট্রিং-এ কেন কাজ করে? (টাইপ কোয়ার্সন)

मान लीजिए हमारे यहां एक कोड स्निपेट है जो कुछ चौंकाने वाले परिणाम उत्पन्न करता है। सबसे पहले, हम देखते हैं कि मॉड्यूलो ऑपरेटर स्ट्रिंग्स के साथ भी ठीक काम कर रहा है (आश्चर्यजनक रूप से)। दूसरे, दो स्ट्रिंग्स का कनकैटिनेशन अजीब परिणाम उत्पन्न करता है।

हमें यह समझाने की आवश्यकता है कि जावास्क्रिप्ट ऐसा क्यों करता है?

यहां समस्या का कोड है -

उदाहरण

const numStr = '127'; const result = numStr % 5; const firstName = 'Armaan'; const lastName = 'Malik'; const fullName = firstName + + lastName; console.log('modulo result: ', result); console.log('full name: ', fullName);

आउटपुट

modulo result: 2 full name: ArmaanNaN

कोड में कूदने से पहले, आइए जावास्क्रिप्ट के सबसे मौलिक विषयों में से एक के बारे में थोड़ा सीखें → टाइप कन्वर्जन।

टाइप कन्वर्जन

मूल रूप से, टाइप कन्वर्जन जावास्क्रिप्ट कंपाइलर्स द्वारा एक डेटा टाइप को दूसरे में बदलने का एक तरीका है। वैध टाइप कन्वर्जन के उदाहरण होंगे स्ट्रिंग को बूलियन में बदलना, नंबर को स्ट्रिंग में बदलना आदि।

टाइप कन्वर्जन एक बहुत विशाल विषय है और इस समाधान की लंबाई को प्रतिबंधित करने के लिए हम केवल इस कोड स्निपेट में उपयोग की जाने वाली चीजों का पता लगाएंगे। टाइप कन्वर्जन के दो प्रकारों में से, जो कंपाइलर द्वारा स्वचालित रूप से किया जाता है उसे इम्प्लिसिट टाइप कन्वर्जन कहा जाता है।

यह अनुसरण करता है -

कोई भी डेटा टाइप (प्रिमिटिव या नॉन-प्रिमिटिव) इम्प्लिसिटली कन्वर्ट होगा -

  • स्ट्रिंग में (जब बाइनरी + ऑपरेटर के साथ उपयोग किया जाता है)।

  • नंबर में (जब अंकगणितीय ऑपरेटर्स जैसे +, -, /, *, % के साथ उपयोग किया जाता है और केवल यूनरी + ट्रिगर करता है

नंबर कन्वर्जन बाइनरी + नहीं, जब तुलना ऑपरेटर, बिटवाइज़ ऑपरेटर या ढीली समानता ऑपरेटर [==] के साथ उपयोग किया जाता है)

  • बूलियन में (जब लॉजिकल ऑपरेटर्स & | ! के साथ उपयोग किया जाता है)

***एक और बात ध्यान देने योग्य है कि यूनरी (+) ऑपरेटर की प्राथमिकता बाइनरी (+) ऑपरेटर से अधिक है।

कोड व्याख्या

तो, इन चीजों के स्पष्ट होने के साथ, आइए कोड पर जाएं और इसे लाइन दर लाइन देखें -

Line 2 → result = '127' % 5;

इम्प्लिसिट कन्वर्जन अंदर लेता है और % ऑपरेटर देखता है, जिसके कारण यह स्ट्रिंग '127' को नंबर 127 में बदल देता है और 2 result में स्टोर हो जाता है -

Line 5 → fullName = firstName + + lastName;
fullName = firstName + (+lastName); 

सामान्य परिस्थितियों में, गणना बाएं से दाएं होती लेकिन यूनरी ऑपरेटर की प्राथमिकता के कारण, यह पहले नंबर में गणना हो जाता है और ऑपरेशन इस तरह हो जाता है -

fullName = firstName + NaN;

और फिर

fullName = ArmaanNaN
  1. জাভাস্ক্রিপ্ট স্প্রেড অপারেটর

  2. জাভাস্ক্রিপ্ট টাইপ কোэрসন কী?

  3. জাভাস্ক্রিপ্টে টেমপ্লেট স্ট্রিংস

  4. জাভাস্ক্রিপ্টে 'select' এলিমেন্টে addEventListener কেন কাজ করে না?