कंपैरिज़न ऑपरेटर, दो ऑपरेंड की वैल्यू की तुलना करते हैं और यह आकलन करते हैं कि उनके बनाए गए स्टेटमेंट की वैल्यू true
है या false
. नीचे दिए गए उदाहरण में, दो ऑपरेंड की तुलना करने के लिए, सटीक इक्विलिटी ऑपरेटर (===
) का इस्तेमाल किया गया है: एक्सप्रेशन 2 + 2
और वैल्यू 4
. एक्सप्रेशन का नतीजा और संख्या वैल्यू 4
एक ही है. इसलिए, इस एक्सप्रेशन का आकलन true
के तौर पर किया जाता है:
2 + 2 === 4
> true
टाइप कोर्स और बराबरी
तुलना करने वाले दो सबसे ज़्यादा इस्तेमाल किए जाने वाले ऑपरेटर, ==
और ===
हैं. ==
का इस्तेमाल, वैल्यू के थोड़े-बहुत अंतर के लिए किया जाता है, जबकि ===
का इस्तेमाल, वैल्यू के एक जैसे होने के लिए किया जाता है. ==
, ऑपरेंड को मैच करने वाले डेटा टाइप में बदलकर, दो वैल्यू के बीच तुलना करता है. हालांकि, यह तुलना सटीक नहीं होती. उदाहरण के लिए, 2 == "2"
true
दिखाता है, भले ही संख्या वाली वैल्यू और स्ट्रिंग वाली वैल्यू की तुलना की जा रही हो.
2 == 2
> true
2 == "2"
> true
!=
के लिए भी यही बात लागू होती है. यह सिर्फ़ तब true
दिखाता है, जब तुलना किए जा रहे ऑपरेंड बराबर न हों.
2 != 3
> true
2 != "2"
> false
===
या !==
का इस्तेमाल करके सख्त तुलना करने पर, टाइप को बदलने की ज़रूरत नहीं होती. true
का आकलन करने के लिए, सटीक तुलना करने पर, तुलना की जा रही वैल्यू का डेटा टाइप एक ही होना चाहिए. इस वजह से, 2 == "2"
से true
मिलता है, लेकिन 2 === "2"
से false
मिलता है:
2 === 3
> false
2 === "2"
> false
अपने-आप होने वाली कार्रवाई की वजह से, किसी भी तरह की गलतफ़हमी को दूर करने के लिए, जब भी हो सके ===
का इस्तेमाल करें.
ऑपरेटर | ब्यौरा | इस्तेमाल | नतीजा |
---|---|---|---|
=== | पूरी तरह से बराबर | 2 === 2 | सही |
!== | पूरी तरह से बराबर नहीं है | 2 !== "2" | सही |
== | बराबर (या "कुछ हद तक बराबर") | 2 == "2" | सही |
!= | बराबर नहीं है | 2 != "3" | सही |
> | इससे ज़्यादा | 3 > 2 | सही |
>= | इससे ज़्यादा या इसके बराबर | 2 >= 2 | सही |
< | इससे कम | 2 < 3 | सही |
<= | इससे कम या इसके बराबर | 2 <= 3 | सही |
Truey और falsy
JavaScript में सभी वैल्यू, true
या false
होती हैं. साथ ही, इन्हें बूलियन वैल्यू में बदला जा सकता है. उदाहरण के लिए, "कम-से-कम बराबर" तुलना करने वाले ऑपरेटर का इस्तेमाल करके. वैल्यू का एक सीमित सेट false
पर लागू होता है:
0
null
undefined
NaN
- खाली स्ट्रिंग (
""
)
अन्य सभी वैल्यू को true
में बदल दिया जाता है. इनमें एक या उससे ज़्यादा वर्णों वाली कोई भी स्ट्रिंग और शून्य से बड़ी सभी संख्याएं शामिल हैं. इन्हें आम तौर पर "सही" और
"गलत" वैल्यू कहा जाता है.
"My string" == true
> true
100 == true
> true
0 == true
> false
तार्किक ऑपरेटर
दो या उससे ज़्यादा शर्तों वाले स्टेटमेंट के आकलन के आधार पर, स्क्रिप्ट के फ़्लो को कंट्रोल करने के लिए, लॉजिकल AND (&&
), OR (||
), और NOT (!
) ऑपरेटर का इस्तेमाल करें:
2 === 3 || 5 === 5;
> true
2 === 2 && 2 === "2"
> false
2 === 2 && !"My string."
> false
लॉजिकल नॉट (!
) एक्सप्रेशन, ऑपरेंड की सच्ची या गलत वैल्यू को बदल देता है. अगर ऑपरेंड की वैल्यू false
है, तो नतीजा true
होगा और अगर ऑपरेंड की वैल्यू true
है, तो नतीजा false
होगा:
true
> true
!true
> false
!false
> true
किसी संख्या या स्ट्रिंग जैसे किसी अन्य डेटा टाइप के सामने लॉजिकल NOT ऑपरेटर (!
) का इस्तेमाल करने पर, उस वैल्यू को बूलियन में बदल दिया जाता है. साथ ही, नतीजे की सही या गलत वैल्यू को उलट दिया जाता है.
"string"
> "string"
!"string"
> false
0
> 0
!0
> true
डेटा को जल्दी से मैच करने वाली बूलियन वैल्यू में बदलने के लिए, दो NOT ऑपरेटर का इस्तेमाल करना आम बात है:
!!"string"
> true
!!0
> false
लॉजिकल AND और OR ऑपरेटर, अपने-आप कोई दबाव नहीं डालते. ये फ़ंक्शन, जिन दो ऑपरेंड का आकलन किया जा रहा है उनमें से किसी एक की वैल्यू दिखाते हैं. यह वैल्यू, आकलन के आधार पर चुने गए ऑपरेंड की होती है.
लॉजिकल ऐंड (&&
) अपने दो ऑपरेंड में से पहला ऑपरेंड सिर्फ़ तब दिखाता है, जब उस ऑपरेंड का वैल्यू false
हो. अगर वैल्यू false
नहीं है, तो दूसरा ऑपरेंड दिखाया जाता है. तुलनाओं में, अगर वैल्यू को बूलियन वैल्यू के तौर पर दिखाया जाता है, तो यह सिर्फ़ तब true
दिखाता है, जब लॉजिकल AND के दोनों ओर मौजूद ऑपरेंड की वैल्यू true
हो. अगर किसी भी पक्ष का आकलन false
होता है, तो यह false
दिखाता है.
true && false
> false
false && true
> false
false && false
> false
true && true
> true
जब &&
का इस्तेमाल दो ऐसे ऑपरेंड के साथ किया जाता है जो बूलियन नहीं हैं, तो पहला ऑपरेंड वैसा ही दिखता है जैसा वह है. हालांकि, ऐसा तब होता है, जब उसे false
में बदला जा सकता हो. अगर पहले ऑपरेंड को true
में बदला जा सकता है, तो दूसरे ऑपरेंड को बिना किसी बदलाव के दिखाया जाता है:
false && "My string"
> false
null && "My string"
> null
"My string" && false
> false
"My string" && "My second string"
> "My second string"
2 === 2 && "My string"
> "My string"
लॉजिकल OR (||
) अपने दो ऑपरेंड में से पहला ऑपरेंड सिर्फ़ तब दिखाता है, जब उस ऑपरेंड का आकलन true
के तौर पर किया जाता है. अगर ऐसा नहीं होता है, तो दूसरा ऑपरेंड दिखाया जाता है. बूलियन वैल्यू का आकलन करने वाली तुलनाओं में, इसका मतलब है कि अगर कोई ऑपरेंड true
का आकलन करता है, तो यह true
दिखाता है. अगर कोई भी पक्ष true
का आकलन नहीं करता है, तो यह false
दिखाता है:
true || false
> true
false || true
> true
true || true
> true
false || false
> false
||
का इस्तेमाल दो ऐसे ऑपरेंड के साथ करने पर जो बूलियन नहीं हैं, तो पहला ऑपरेंड वैसा ही दिखता है जैसा वह पहले था. हालांकि, ऐसा तब होता है, जब उसे true
में बदला जा सकता हो. अगर पहले ऑपरेंड को false
में बदला जा सकता है, तो दूसरे ऑपरेंड को बिना किसी बदलाव के दिखाया जाता है:
false || "My string"
> "My string"
null || "My string"
> "My string"
"My string" || false
> "My string"
"My string" || "My second string"
> "My string"
2 === 2 || "My string"
> true
नॉन-ज़ीरो वैल्यू को शून्य में बदलने वाला ऑपरेटर
ES2020 में पेश किया गया, "शून्य के बराबर वैल्यू को एक साथ जोड़ने वाला ऑपरेटर" (??
) पहला ऑपरेंड सिर्फ़ तब दिखाता है, जब उस ऑपरेंड में null
या undefined
के अलावा कोई दूसरी वैल्यू हो. ऐसा न होने पर, यह दूसरा ऑपरेंड दिखाता है.
null ?? "My string"
> "My string"
undefined ?? "My string"
> "My string"
true ?? "My string";
> true
??
, लॉजिकल OR की तरह ही होता है. हालांकि, पहले ऑपरेंड का आकलन करने के तरीके में यह ज़्यादा सख्त होता है. ||
, किसी भी ऐसे एक्सप्रेशन के लिए दूसरा ऑपरेंड दिखाता है जिसे false
में बदला जा सकता है. इनमें undefined
और null
भी शामिल हैं. ??
सिर्फ़ तब दूसरा ऑपरेंड दिखाता है, जब पहला ऑपरेंड null
या undefined
के बराबर हो. भले ही, उसे false
में बदला जा सकता हो:
0 ?? "My string";
> 0
false ?? "My string";
> false
undefined ?? "My string";
> "My string"
लॉजिकल असाइनमेंट ऑपरेटर
असाइनमेंट ऑपरेटर का इस्तेमाल करके, दूसरे ऑपरेटर की वैल्यू को पहले ऑपरेटर को असाइन करें. इसका सबसे सामान्य उदाहरण, बराबर का एक चिह्न (=
) है. इसका इस्तेमाल, एलान किए गए वैरिएबल को वैल्यू असाइन करने के लिए किया जाता है.
लॉजिकल असाइनमेंट ऑपरेटर का इस्तेमाल करके, किसी वैरिएबल की वैल्यू को शर्त के हिसाब से असाइन करें. यह वैल्यू, उस वैरिएबल की सही या गलत वैल्यू पर आधारित होती है.
लॉजिकल AND असाइनमेंट (&&=
) ऑपरेटर, दूसरे ऑपरेंड का आकलन करता है और पहले ऑपरेंड को तब असाइन करता है, जब पहले ऑपरेंड का आकलन true
के तौर पर किया गया हो. इसका मतलब है कि "अगर पहला ऑपरेंड सही है, तो उसे दूसरे ऑपरेंड की वैल्यू असाइन करें:"
let myVariable = false;
myVariable &&= 2 + 2;
> false
myVariable = true;
myVariable &&= 2 + 2;
> 4
पहले ऑपरेंड की सही या गलत वैल्यू से यह तय होता है कि असाइनमेंट किया जाएगा या नहीं. हालांकि, तुलना करने वाले ऑपरेटर का इस्तेमाल करके पहले ऑपरेंड का आकलन करने पर, true
या false
बूलियन मिलता है. इसे कोई वैल्यू असाइन नहीं की जा सकती:
let myVariable = 5;
myVariable > 2 &&= "My string"
> SyntaxError: Invalid left-hand side in assignment
लॉजिकल OR असाइनमेंट (||=
) ऑपरेटर, दूसरे ऑपरेंड का आकलन करता है और अगर पहला ऑपरेंड false
के तौर पर दिखता है, तो उसे पहले ऑपरेंड को असाइन करता है—इसका मतलब है कि "अगर पहला ऑपरेंड गलत है, तो उसे दूसरे ऑपरेंड की वैल्यू असाइन करें:"
let myVariable = false;
myVariable ||= 2 + 2;
> 4
myVariable = true;
myVariable ||= 2 + 2;
> true
देखें कि आपको क्या समझ आया
कौनसा ऑपरेटर "सटीक रूप से बराबर" दिखाता है?
===
==
=
!=