Relational Operators in JavaScript

इन Operators का प्रयोग सामान्‍यत: तुलना करने के लिए किया जाता है और इन्हें सामान्‍यत: Conditional या Looping Statements के साथ Use किया जाता है। ये Operators Final Results के रूप में केवल true या false Value ही Return करते हैं। इन्हें निम्नानुसार Use किया जाता है:

[code]
var res = 23 > 5;              //Output: true
var res = 23 < 5;              //Output: false
var res = 23 >= 23;            //Output: true
var res = 23 <= 23;            //Output: true
var res = 23 <= 5;             //Output: false
var res = 23 >= 5;             //Output: true
[/code]

ECMAScript में जब हम इन Operators को विभिन्न प्रकार के Data Types के साथ Use करते हैं, तब ECMAScript विभिन्न प्रकार के Data Types के अनुसार विभिन्न प्रकार के Conversions करता है और इन Conversation को निम्न Rules के आधार पर Perform करते हुए Final Result Return करता है:

  • यदि Operands Numbers हों, तो ये Operators सामान्‍य Numeric Comparison Perform करते हुए true या false Return करते हैं।
  • यदि Operands Strings हों, तो ये Operators दोनों Strings के समान Position के Characters को Compare करते हैं।
  • यदि एक Operand Number हो, तो दूसरे Operand को भी ये Operators पहले Number में Convert करते हैं और फिर Comparison करते हैं।
  • यदि दोनों में से कोई एक Operand Object हो, तो ये Operators उस Operand के valueOf() Method को Call करके Object को Number में Convert करने के बाद Comparison करते हैं। यदि Object के लिए valueOf() Method Available न हो, तो ये Operator toString() Method को Call करते हैं और पिछले Rules के अनुसार Comparison के बाद Result Return करते हैं।
  • यदि दोनों में से कोई एक Operand Boolean हो, तो ये Operator पहले उस Boolean Value को Number में Convert करते हैं फिर Comparison Perform करके Final Result Return करते हैं।

जब Relational Operator का प्रयोग दो Strings को Compare करने के लिए किया जाता है, हर String के पहले Character का Code दूसरी String के पहले Character के Code से Compare होता है और इस Comparison के Complete होने के बाद एक Boolean Value Return होती है।

चूंकि Uppercase Letters का ASCII Code Lowercase Letters के ASCII Code से कम होता है, इसलिए निम्न Comparison True Return करता है:

[code]
var res = "Demo" < "alpha";     //Output: true
[/code]

हम देख सकते हैं कि “Alphabets” में “a” पहले आता है जबकि “D” बाद में आता है, लेकिन फिर भी उपरोक्त Statement में Demo छोटा है alpha से। क्योंकि D का ASCII Code 68 होता है जबकि a का ASCII Code 97 से कम होता है।

इसलिए यदि हम उपरोक्त Comparison को Case Sensitive तरीके से Perform न करना चाहें, तो Comparison के पहले दोनों Strings को Lowercase या Uppercase में Convert कर सकते हैं। इस प्रक्रिया को निम्न Statement द्वारा समझा जा सकता है:

[code]
var res = "Demo".toUpperCase()< "alpha".toUpperCase();  // false
[/code]

चूंकि अब उपरोक्त Statement में दोनों Strings Uppercase में हैं, इसलिए अब Comparison ये हो रहा है कि “Demo छोटा है alpha” से, जो कि गलत है क्योंकि English Alphabet में Demo का D Alpha के a से पहले नहीं बल्कि बाद में आता है और जो पहले आता है वह छोटा माना जाता है।

ऐसी ही एक और Situation तब होती है जब दो Number Values String Form में होती हैं और दोनों Number String का Comparison किया जाता है। जैसे-

[code]
var res = “20” < “9”;      //Output: true 
[/code]

हम जानते हैं कि वास्तव में 9 छोटा होता है 20 से न कि 20 छोटा होता है 9 से। लेकिन उपरोक्त Statement true Return कर रहा है, जो इस बात का Indication है कि 20 छोटा है 9 से। ऐसा इसलिए हो रहा है क्योंकि यहां भी ECMAScript 20 को नहीं बल्कि String के पहले Character 2 को Compare कर रहा है 9 से और 2 छोटा होता है 9 से, इसलिए ये Statement true Return कर रहा है। जबकि यदि हमें सही Comparison करना है, तो हमें उपरोक्त Statement को निम्नानुसार लिखना होगा-

[code]
var res = “20” < 9;        //Output: false
[/code]

अब उपरोक्त Statement में ECMAScript सबसे पहले String “20” को Number 20 में Convert करेगा। फिर Comparison करेगा। जिससे Finally false Return होगा।

जब भी कभी किसी String का Comparison किसी Number के साथ किया जाता है, तब String सबसे पहले Number में Convert होता है, फिर Comparison Perform होता है। लेकिन यदि कोई String Number में Convert होने लायक न हो, जैसाकि निम्न उदाहरण में दिखाया गया है:

[code]
var result = “a” < 3;      //Output:false because “a” becomes NaN
[/code]

चूंकि उपरोक्त Statement में String”a” को ECMAScript द्वारा एक Valid Number में Convert नहीं किया जा सकता और Conversion के बाद String “a” के स्थान पर NaN आ जाता है, इस स्थिति में ऊपर Specify किए गए Rules के अनुसार हमेंशा false Return होता है। यानी

[code]
var result1 = NaN < 3;       //Output: false
var result2 = NaN >= 3;      //Output: false
[/code]

Advavnce JavaScript in Hindiये Article इस वेबसाईट पर Selling हेतु उपलब्‍ध EBook Advance JavaScript in Hindi से लिया गया है। इसलिए यदि ये Article आपके लिए उपयोगी रहा, तो निश्चित रूप से ये पुस्तक भी आपके लिए काफी उपयोगी साबित होगी। 

Advance JavaScript in Hindi | Page: 669 | Format: PDF

BUY NOW GET DEMO REVIEWS