कंपैरिज़न ऑपरेटर

तुलना करने वाले ऑपरेटर दो ऑपरेंड के मानों की तुलना करते हैं और आकलन करते हैं कि यह स्टेटमेंट 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 != "3" सही
> इससे ज़्यादा 3 > 2 सही
>= इससे ज़्यादा या इसके बराबर दो >= दो सही
< इससे कम 2 < 3 सही
<= इससे कम या इसके बराबर 2 <= तीन सही

सच और झूठ

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

एक लॉजिकल NOT (!) एक्सप्रेशन, किसी ऑपरेंड की सत्य या असत्य वैल्यू को नकार देता है. अगर ऑपरेंड का आकलन 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 ऑपरेटर अपने-आप कोई दबाव नहीं डालते हैं. वे चुने गए विकल्प के साथ मूल्यांकन किए जा रहे दो ऑपरेंड में से एक का मान दें उस आकलन के आधार पर तय किया गया ऑपरेंड.

लॉजिकल AND (&&) अपने दो ऑपरेंड में से पहला ऑपरेंड सिर्फ़ तब लौटाता है, जब वह ऑपरेंड 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 के जैसा है, लेकिन पहला ऑपरेंड जितना सख्त है मूल्यांकन किया गया. || किसी भी एक्सप्रेशन के लिए दूसरा ऑपरेंड लौटाता है undefined और null को मिलाकर false किया गया. ?? सेकंड वैल्यू दिखाता है जब पहला ऑपरेंड, 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

देखें कि आपको कितना समझ आया है

कौनसा ऑपरेटर "पूरी तरह बराबर" दिखाता है?

!=
===
==
=