जावास्क्रिप्ट में समानता की तुलना करने के चार तरीके हैं। यह आलेख समानता निर्धारित करने के लिए उपयोग किए जाने वाले अद्वितीय ऑपरेटरों के बारे में बात करता है, किस प्रकार का जबरदस्ती है, और जावास्क्रिप्ट भाषा में एक सच्चे या झूठे मूल्य के मूल्यांकन के दौरान सामना की जाने वाली कुछ विशिष्टताओं के बारे में बात करता है।
सख्त समानता तुलना
सख्त समानता ऑपरेटर को ट्रिपल बराबर चिह्न (===) द्वारा दर्शाया जाता है। इस ऑपरेटर का उद्देश्य न केवल मूल्य की तुलना करना है, बल्कि इसके प्रकार की भी तुलना करना है।
const strictComparison = (a, b) => { console.log(typeof a); console.log(typeof b); return a === b; } strictComparison(8, '8'); //false
strictComparison
उपरोक्त उदाहरण में फ़ंक्शन दो मान लेता है और देता है कि दो मान एक दूसरे के बराबर हैं या नहीं।
पहली नज़र में, मान समान दिखते हैं क्योंकि वे दोनों मान 8
. के हैं . हालांकि, सख्त समानता ऑपरेटर भी प्रकार को देखता है। अगर हम a
. को देखें तो इस उदाहरण में, और देखें
typeof a
,
यह ‘number’
लौटाएगा . अगर हम b
. के साथ भी ऐसा ही करें , typeof b
. के साथ ,
यह ‘string’
लौटाएगा .
क्योंकि प्रकार समान नहीं हैं, यह false
लौटाएगा .
असामान्य तुलना ===
कुछ असामान्य तुलनाएं हैं जिन्हें जावास्क्रिप्ट में सख्त बराबर ऑपरेटर के साथ किया जा सकता है। यहाँ कुछ ऐसे हैं जो आमतौर पर साक्षात्कार स्थितियों के बारे में पूछे जाते हैं:
संचालन1 | टाइपऑफ़ ऑपरेंड1 | संचालन2 | टाइपऑफ़ ऑपरेंड2 | वापसी मूल्य |
शून्य | वस्तु | शून्य | वस्तु | सच |
अपरिभाषित | अपरिभाषित | अपरिभाषित | अपरिभाषित | सच |
शून्य | वस्तु | अपरिभाषित | अपरिभाषित | झूठा |
NaN | संख्या | NaN | संख्या | झूठा |
झूठा | बूलियन | “झूठा” | स्ट्रिंग | झूठा |
झूठा | बूलियन | झूठा | बूलियन | सच |
“” | स्ट्रिंग | “” | स्ट्रिंग | सच |
“” | स्ट्रिंग | अपरिभाषित | अपरिभाषित | झूठा |
ध्यान देने वाली एक और बात यह है कि यह डेटा संरचनाओं के साथ तुलना नहीं करेगा। सरणियों या वस्तुओं की तुलना करने के लिए आपको अधिक परिष्कृत कथन का उपयोग करने की आवश्यकता है।
यहां अधिकांश प्रविष्टियां उनके द्वारा किए जाने वाले तरीके का मूल्यांकन करती हैं क्योंकि प्रकार मेल खाते हैं या मेल नहीं खाते हैं। एक अपवाद है NaN
- इसका मूल्यांकन false
. होता है इस तथ्य के कारण कि NaN
सैद्धांतिक रूप से कुछ भी हो सकता है - इसलिए कोई संकेत नहीं है कि यह बराबर हो सकता है या नहीं, इसलिए झूठ का मूल्यांकन करना।
81% प्रतिभागियों ने कहा कि बूटकैंप में भाग लेने के बाद उन्हें अपनी तकनीकी नौकरी की संभावनाओं के बारे में अधिक आत्मविश्वास महसूस हुआ। आज ही एक बूटकैंप से मिलान करें।
बूटकैंप शुरू करने से लेकर अपनी पहली नौकरी खोजने तक, औसत बूटकैंप ग्रेड ने करियर संक्रमण में छह महीने से भी कम समय बिताया।
सख्त असमानता तुलना
सख्त असमानता ऑपरेटर को विस्मयादिबोधक बिंदु और दो बराबर चिह्नों (!==) द्वारा दर्शाया जाता है। यह मूल्यांकन करेगा कि दो मान मूल्य और प्रकार में समान नहीं हैं या नहीं।
const strictInequalityComparison = (a, b) => { console.log(typeof a); console.log(typeof b); return a !== b; } strictInequalityComparison("8", 8); //true
strictInequalityComparison
उपरोक्त उदाहरण में फ़ंक्शन दो मान लेता है और देता है कि दो मान एक दूसरे के बराबर नहीं हैं या नहीं।
पहली नज़र में, मान समान दिखते हैं (और असमान नहीं) क्योंकि दोनों का मान समान है। हालांकि, सख्त असमानता ऑपरेटर, सख्त समानता ऑपरेटर की तरह, भी प्रकार को देखता है।
अगर हम a
. को देखें तो इस उदाहरण में, और देखें typeof a
, यह ‘string’
return लौटाएगा . अगर हम b
. के साथ भी ऐसा ही करें , typeof b
. के साथ , यह ‘number’
return लौटाएगा . क्योंकि प्रकार समान नहीं हैं, यह वापस आ जाएगा
true
.
असामान्य तुलना !==
कुछ असामान्य तुलनाएं हैं जिन्हें जावास्क्रिप्ट में सख्त असमानता ऑपरेटर के साथ किया जा सकता है। यहाँ साक्षात्कार स्थितियों के बारे में कुछ सामान्य रूप से पूछे गए हैं:
संचालन1 | टाइपऑफ़ ऑपरेंड1 | संचालन2 | टाइपऑफ़ ऑपरेंड2 | वापसी मूल्य |
शून्य | वस्तु | शून्य | वस्तु | झूठा |
अपरिभाषित | अपरिभाषित | अपरिभाषित | अपरिभाषित | झूठा |
शून्य | वस्तु | अपरिभाषित | अपरिभाषित | सच |
NaN | संख्या | NaN | संख्या | सच |
झूठा | बूलियन | “झूठा” | स्ट्रिंग | सच |
झूठा | बूलियन | झूठा | बूलियन | झूठा |
“” | स्ट्रिंग | “” | स्ट्रिंग | झूठा |
“” | स्ट्रिंग | अपरिभाषित | अपरिभाषित | सच |
सख्त समानता ऑपरेटर की तरह, वस्तुओं या सरणियों के बीच तुलना नहीं की जा सकती।
एक और बात...
आपके जावास्क्रिप्ट विकास करियर की अधिकांश स्थितियों में, ये दो ऑपरेटर, ===और !==, वही होंगे जिनके साथ आप अपना सशर्त तर्क लिखेंगे।
ढीली समानता तुलना
ढीली समानता ऑपरेटर को दोहरे बराबर चिह्न (==) द्वारा दर्शाया जाता है। इस ऑपरेटर का उद्देश्य मूल्यांकन करने से पहले दोनों मानों को एक सामान्य प्रकार के लिए बाध्य करना है या नहीं, यह बराबर है या नहीं। इसे टाइप ज़बरदस्ती . कहा जाता है या रूपांतरण टाइप करें .
const looseComparison = (a, b) => { console.log(typeof a); console.log(typeof b); return a == b; } strictComparison(8, '8'); //true
looseComparison
उपरोक्त उदाहरण में फ़ंक्शन दो मान लेता है और देता है कि दो मान एक दूसरे के बराबर बराबर हैं या नहीं।
पहली नज़र में, मान समान नहीं दिखते क्योंकि एक संख्या है और एक एक स्ट्रिंग है। हालाँकि, ढीला समानता ऑपरेटर प्रकार को नहीं देखता है। बयान मूल्य की तुलना करने से पहले प्रकारों को समान होने के लिए मजबूर करने का प्रयास करेगा - इसलिए उदाहरण सत्य वापस आ जाएगा क्योंकि दूसरा ऑपरेंड एक संख्या में परिवर्तित हो जाता है और फिर तुलना की जाती है।
असामान्य तुलना ==
कुछ असामान्य तुलनाएं हैं जिन्हें जावास्क्रिप्ट में सख्त बराबर ऑपरेटर के साथ किया जा सकता है। यहाँ साक्षात्कार स्थितियों के बारे में कुछ सामान्य रूप से पूछे गए हैं:
संचालन1 | टाइपऑफ़ ऑपरेंड1 | संचालन2 | टाइपऑफ़ ऑपरेंड2 | वापसी मूल्य |
शून्य | वस्तु | शून्य | वस्तु | सच |
अपरिभाषित | अपरिभाषित | अपरिभाषित | अपरिभाषित | सच |
शून्य | वस्तु | अपरिभाषित | अपरिभाषित | सच |
NaN | संख्या | NaN | संख्या | झूठा |
झूठा | बूलियन | “झूठा” | स्ट्रिंग | झूठा |
झूठा | बूलियन | झूठा | बूलियन | सच |
“” | स्ट्रिंग | “” | स्ट्रिंग | सच |
“” | स्ट्रिंग | अपरिभाषित | अपरिभाषित | झूठा |
यहां अधिकांश प्रविष्टियां उसी तरह मूल्यांकन करती हैं जैसे उन्होंने सख्त समानता पर पहले खंड में किया था। उल्लेखनीय अपवाद यह है कि शून्य और अपरिभाषित कम तुलना में सही का मूल्यांकन करता है।
ढीली असमानता तुलना
ढीला असमानता ऑपरेटर एक विस्मयादिबोधक बिंदु और एक बराबर चिह्न (!=) द्वारा दर्शाया गया है। यह मूल्यांकन करेगा कि क्या दो मान केवल मूल्य में समान नहीं हैं। यह दोनों तर्कों को एक ही प्रकार के रूप में परिवर्तित करने का प्रयास करके ऐसा करता है।
const looseInequalityComparison = (a, b) => { console.log(typeof a); console.log(typeof b); return a != b; } looseInequalityComparison("8", 8); //false
looseInequalityComparison
उपरोक्त उदाहरण में फ़ंक्शन दो मान लेता है और देता है कि दो मान एक दूसरे के बराबर नहीं हैं या नहीं।
पहली नज़र में, मान समान दिखते हैं क्योंकि उन दोनों का मान समान है। हालांकि, ढीली असमानता ऑपरेटर, ढीली समानता ऑपरेटर की तरह, तुलना से पहले दोनों ऑपरेंड पर समान होने के लिए मजबूर करता है। क्योंकि जबरदस्ती के बाद मान समान हैं, यह false
लौटाएगा .
असामान्य तुलना !=
. के साथ
जावास्क्रिप्ट में ढीली असमानता ऑपरेटर के साथ कुछ असामान्य तुलनाएं की जा सकती हैं। यहाँ साक्षात्कार स्थितियों के बारे में कुछ सामान्य रूप से पूछे गए हैं:
संचालन1 | टाइपऑफ़ ऑपरेंड1 | संचालन2 | टाइपऑफ़ ऑपरेंड2 | वापसी मूल्य |
शून्य | वस्तु | शून्य | वस्तु | झूठा |
अपरिभाषित | अपरिभाषित | अपरिभाषित | अपरिभाषित | झूठा |
शून्य | वस्तु | अपरिभाषित | अपरिभाषित | झूठा |
NaN | संख्या | NaN | संख्या | सच |
झूठा | बूलियन | “झूठा” | स्ट्रिंग | सच |
झूठा | बूलियन | झूठा | बूलियन | झूठा |
“” | स्ट्रिंग | “” | स्ट्रिंग | झूठा |
“” | स्ट्रिंग | अपरिभाषित | अपरिभाषित | सच |
सख्त समानता ऑपरेटर की तरह, वस्तुओं या सरणियों के बीच तुलना नहीं की जा सकती।
यहां अधिकांश प्रविष्टियां उसी तरह मूल्यांकन करती हैं जैसे उन्होंने दूसरे खंड में सख्त असमानता पर किया था। उल्लेखनीय अपवाद यह है कि शून्य और अपरिभाषित कम से कम तुलना में गलत का मूल्यांकन करता है।
निष्कर्ष
इस लेख ने जावास्क्रिप्ट में समानता की तुलना करने के चार तरीकों पर गौर किया है। याद रखने वाली मुख्य बात यह है कि ट्रिपल बराबर (===) और डबल बराबर (==) एक ही ऑपरेटर नहीं हैं। एक प्रकार और मूल्य पर सख्ती से मूल्यांकन करता है और दूसरा दोनों को एक ही प्रकार के होने के लिए मजबूर करने की कोशिश करने के बाद ही मूल्य का मूल्यांकन करता है।