ईसीएमएसक्रिप्ट समानता ऑपरेटर

दो वारियबलों के बीच समानता का निर्धारण करना कार्यक्रम निर्माण में एक महत्वपूर्ण ऑपरेशन है। मूल मूल्यों के लिए, यह ऑपरेशन बहुत सरल है, लेकिन ऑब्जैक्ट की बात होने पर, काम काफी जटिल हो जाता है।

ECMAScript दो तरह के समानता ऑपरेटर प्रदान करता है: समानता सूचक (==) और असमानता सूचक (!=) को मूल मूल्यों के लिए, पूर्ण समानता सूचक (===) और पूर्ण असमानता सूचक (!==) को ऑब्जैक्ट के लिए प्रयोग किया जाता है।

समानता सूचक और असमानता सूचक

ECMAScript में, समानता सूचक (==) द्विभुज (==) से प्रदर्शित है, जब और केवल दोनों ऑब्जैक्ट समान हों तो यह true वापस करता है। असमानता सूचक (!=) डब्बू और बराबरी सूचक (!=) से प्रदर्शित है, जब और केवल दोनों ऑब्जैक्ट असमान हों तो यह true वापस करता है। दोनों ऑपरेटरों को दोनों ऑब्जैक्ट को समानता की जांच करने के लिए टाइप कनवर्शन करना होता है।

टाइप कनवर्शन के नियम निम्न हैं:

  • यदि एक ऑब्जैक्ट Boolean मूल्य है, तो समानता की जांच करने से पहले इसे नंबर में बदला जाता है।false 0 में बदला जाता है, true 1 है।
  • यदि एक ऑब्जैक्ट स्ट्रिंग है और दूसरा नंबर है, तो समानता की जांच करने से पहले स्ट्रिंग को नंबर में बदलने की कोशिश की जाती है।
  • यदि एक ऑब्जैक्ट है और दूसरा स्ट्रिंग है, तो समानता की जांच करने से पहले ऑब्जैक्ट को स्ट्रिंग में बदलने की कोशिश की जाती है।
  • यदि एक ऑब्जैक्ट है और दूसरा नंबर है, तो समानता की जांच करने से पहले ऑब्जैक्ट को नंबर में बदलने की कोशिश की जाती है।

तुलना करते समय, इस ऑपरेटर ने नीचे दिए गए नियमों का पालन किया जाता है:

  • null और undefined मूल्य समान हैं।
  • समानता की जांच के दौरान null और undefined को अन्य बातों में नहीं बदला जा सकता है।
  • यदि कोई ऑब्जैक्ट NaN है, समानता सूचक (==) फेलस (false) वापस करेगा, असमानता सूचक (!=) चालू (true) वापस करेगा।
  • यदि दोनों ऑब्जैक्ट हैं, तो उनके संदर्भ मूल्यों को तुलना की जाती है। यदि दोनों ऑब्जैक्ट एक ही के लिए हैं, तो समानता सूचक (==) true वापस करता है, अन्यथा दोनों ऑब्जैक्ट असमान हैं।

महत्वपूर्ण संदेश:भले ही दोनों संख्याएँ NaN हों, समानता सूचक (==) फेलस (false) वापस करता है क्योंकि नियम के अनुसार, NaN NaN से असमान है।

नीचे दिए गए परिवर्तन और उनके परिणामों के लिए एक सारणी है:

एक्सप्रेशन मूल्य
null == undefined true
"NaN" == NaN false
5 == NaN false
NaN == NaN false
NaN != NaN true
false == 0 true
true == 1 true
true == 2 false
undefined == 0 false
null == 0 false
"5" == 5 true

समान निर्देशक और असमान निर्देशक

समान निर्देशक और असमान निर्देशक के समान ऑपरेटर समान निर्देशक (===) और असमान निर्देशक (!==) हैं।ये दोनों ऑपरेटर इसी तरह के काम करते हैं, लेकिन वे समानता की जांच करने से पहले आकार परिवर्तन करते हैं।

समान निर्देशक (===) तीन समान निर्देशकों से प्रस्तुत है, केवल जब ऑपरेंडरों को आकार परिवर्तन किए बिना समान होते हैं तो यह true बदल देता है।

उदाहरण के लिए:

var sNum = "66";
var iNum = 66;
alert(sNum == iNum);	//आउटपुट "true"
alert(sNum === iNum);	//आउटपुट "false"

इस कोड में, पहला alert निर्देशक को समान निर्देशक (==) का उपयोग करता है, जो की पढ़ाई "66" को संख्या 66 में बदल देता है, ताकि यह दूसरे संख्या 66 के साथ तुलना की जाए।जैसा कि पहले कहा गया है, इसका कारण यह है कि पढ़ाई "66" संख्या 66 में बदल दी जाती है।दूसरा alert निर्देशक को समान निर्देशक का उपयोग करता है, जो कि सामान्य रूप से सामान्य निर्देशक के बिना आकार परिवर्तन किए बिना पढ़ाई और संख्या को तुलना करता है, इसलिए पढ़ाई और संख्या के बीच असमानता है, इसलिए आउटपुट "false" है।

असमान निर्देशक (!==) द्वारा दिखाया जाता है, केवल जब ऑपरेंडरों को आकार परिवर्तन किए बिना असमान होते हैं तो यह true बदल देता है।

उदाहरण के लिए:

var sNum = "66";
var iNum = 66;
alert(sNum != iNum);	//आउटपुट "false"
alert(sNum !== iNum);	//आउटपुट "true"

यहाँ, पहला alert असमान निर्देशक (!==) का उपयोग करता है, जो की पढ़ाई "66" को संख्या 66 में बदल देता है, ताकि यह दूसरे ऑपरेंडर 66 के साथ समान हो।इसलिए, गणना परिणाम "false" है क्योंकि दोनों ऑपरेंडर समान हैं।दूसरा alert असमान निर्देशक का उपयोग करता है।यह ऐसा प्रश्न करता है: "sNum" और "iNum" अलग हैं क्या? इस प्रश्न का उत्तर: हाँ (true), क्योंकि sNum एक पढ़ाई है और iNum एक संख्या है, वे स्वाभाविक रूप से अलग हैं।