ECMAScript समानता ऑपरेटर
- पिछला पृष्ठ जोड़नीया ऑपरेटर
- अगला पृष्ठ समानता ऑपरेटर
संबंध संचारक तुलना अभियान्त्रिकी करते हैं। हर संबंध संचारक एक Boolean मान लौटाता है।
सामान्य तुलना तरीका
संबंध संचारक छोटा, बड़ा, छोटा या समान और बड़ा या समान अंकों की तुलना करते हैं, जैसे गणितीय तुलना अभियान्त्रिकी के तरीके से।
हर संबंध संचारक एक Boolean मान लौटाता है:
var bResult1 = 2 > 1 //true var bResult2 = 2 < 1 //false
दो स्ट्रिंग को संबंध संचारक के द्वारा लागू करने पर, उनका व्यवहार अलग है। कई लोगों को लगता है कि छोटा अक्षर "अक्षर श्रेणी में आगे" के अर्थ में है, बड़ा अक्षर "अक्षर श्रेणी में पीछे" के अर्थ में है, लेकिन यह नहीं है। स्ट्रिंग के लिए, पहली स्ट्रिंग में हर अक्षर का चारकोड दूसरी स्ट्रिंग में समान स्थान के अक्षर के चारकोड से संख्यात्मक तुलना करता है। इस तुलना प्रक्रिया के बाद, एक Boolean मान लौटाया जाता है। समस्या यह है कि बड़े अक्षरों का चारकोड छोटे अक्षरों के चारकोड से कम है, इसलिए इस तरह की स्थिति आ सकती है:
var bResult = "Blue" < "alpha"; alert(bResult); // उत्प्रेरण true
उपरोक्त उदाहरण में, स्ट्रिंग "Blue" अ "alpha" से कम है, क्योंकि अक्षर B का चारकोड 66 है, अक्षर a का चारकोड 97 है। वास्तविक अक्षर श्रेणी के अनुसार तुलना करने के लिए मजबूरी से दो अंकों को एक ही रूप से (सबका बड़ा या सबका छोटा) बदलना चाहिए और फिर तुलना करें:
var bResult = "Blue".toLowerCase() < "alpha".toLowerCase(); alert(bResult); //आउटपुट false
दोनों ऑपरेंडर को छोटी लिखी गई जाती है, ताकि "alpha" को "Blue" से अग्रणी पहले के रूप में पहचाना जा सके。
संख्या और स्ट्रिंग की तुलना
एक अन्य कठिन स्थिति दो स्ट्रिंग प्रकार के संख्या की तुलना करने के समय होती है, जैसे:
var bResult = "25" < "3"; alert(bResult); //आउटपुट "true"
ऊपरी दिए गए सब का परीक्षण स्ट्रिंग "25" और "3" के बीच किया जा रहा है। दोनों ऑपरेंडर स्ट्रिंग हैं, इसलिए उनके अकारण आकार ("2" का अकारण आकार 50 है, "3" का अकारण आकार 51 है) की तुलना की जाती है。
लेकिन, यदि किसी ऑपरेंडर को संख्या में परिवर्तित किया जाता है, तो परिणाम काफी दिलचस्प होता है:
var bResult = "25" < 3; alert(bResult); //आउटपुट "false"
यहाँ, स्ट्रिंग "25" संख्या 25 में परिवर्तित होगी और फिर इसे संख्या 3 के साथ तुलना की जाएगी, परिणाम अपेक्षित के अनुरूप है।
किसी भी संख्या और स्ट्रिंग की तुलना करने के समय, ECMAScript स्ट्रिंग को संख्या में परिवर्तित करके तुलना करता है और फिर उनकी आधारभूत अनुक्रम के अनुसार तुलना करता है。
लेकिन, यदि स्ट्रिंग को संख्या में परिवर्तित नहीं किया जा सकता, तो क्या होगा? नीचे दिए गए उदाहरण को देखें:
var bResult = "a" < 3; alert(bResult);
आप इस सब को क्या आने वाला है इसे भविष्यवाणी कर सकते हैं? अकारण लेख "a" को महत्वपूर्ण संख्या में परिवर्तित नहीं किया जा सकता। लेकिन यदि parseInt() विधि पर इसे बुलाया जाता है, तो इसका परिणाम NaN है। नियमों के अनुसार, NaN सहित किसी भी संबंधित गणना ऑपरेटर को false लौटाया जाता है, इसलिए इस सब का परिणाम भी false है:
var bResult = "a" >= 3; alert(bResult);
आमतौर पर, यदि गणना के दो मूल्यों में से एक ज़ेरो से कम है तो फलस्वरूप false लौटाया जाता है, लेकिन यदि कोई संख्या NaN है तो इससे अलग है।
- पिछला पृष्ठ जोड़नीया ऑपरेटर
- अगला पृष्ठ समानता ऑपरेटर