ECMAScript সম্পর্ক অপারেটর
- পূর্ববর্তী পৃষ্ঠা জোড়া অপারেটর
- পরবর্তী পৃষ্ঠা সমতা অপারেটর
সম্পর্ক অপারেটরগুলি তুলনা করা করে।প্রত্যেকটি সম্পর্ক অপারেটর একটি Boolean মান ফিরিয়ে দেয়。
সাধারণ তুলনা পদ্ধতি
সম্পর্ক অপারেটর <, >, <= এবং >= দুই সংখ্যার তুলনা করে, যা গণিতীয় তুলনা করার মতোই কাজ করে。
প্রত্যেকটি সম্পর্ক অপারেটর একটি Boolean মান ফিরিয়ে দেয়:
var bResult1 = 2 > 1 //ট্রু var bResult2 = 2 < 1 //ফ্যালস
কিন্তু, দুই স্ট্রিংকে সম্পর্ক অপারেটর প্রয়োগ করলে, তাদের আচরণ ভিন্ন।বহু লোক মনে করে, কম করা এটা অক্ষর ক্রমে আগে, বড় করা এটা অক্ষর ক্রমে পরের, কিন্তু এটা সত্য নয়।স্ট্রিং-এর ক্ষেত্রে, প্রথম স্ট্রিং-এর প্রতিটি অক্ষরের কোডটি দ্বিতীয় স্ট্রিং-এর একই স্থানের অক্ষরের কোডকে সংখ্যাগতভাবে তুলনা করা হয়।এই তুলনা করা পরে, একটি Boolean মান ফিরিয়ে দেওয়া হয়।সমস্যা এটা যে, বড় অক্ষরগুলির কোডগুলি ছোট অক্ষরগুলির কোডগুলির চেয়ে কম, যার ফলে নিম্নলিখিত ধরনের সমস্যা হতে পারে:
var bResult = "Blue" < "alpha"; alert(bResult); // ট্রু আউটপুট
উপরোক্ত উদাহরণে, স্ট্রিং "Blue" "alpha"-র চেয়ে কম, কারণ বিরাম "B"-র অক্ষর কোড 66, অক্ষর "a"-র অক্ষর কোড 97।সত্যিকারী অক্ষর ক্রমে তুলনা করার জন্য, উভয় সংখ্যাকে একই মাত্রা (সমগ্র বড় অক্ষর বা সমগ্র ছোট অক্ষর) রূপে রূপান্তরিত করতে হবে এবং তারপরে তুলনা করতে হবে:
var bResult = "Blue".toLowerCase() < "alpha".toLowerCase(); alert(bResult); // ফলাফল false
দুটি অপারেটরকেও নিম্নমূল্য রূপে রূপান্তরিত করা হয়, তাই "alpha"-এর অক্ষর ক্রমে "Blue"-এর আগে থাকাকে সঠিকভাবে পরিশীলন করা হয়。
সংখ্যা এবং স্ট্রিং তুলনা
একটি অন্য কঠিন পরিস্থিতি, যখন দুটি স্ট্রিং রূপের সংখ্যা তুলনা করা হয়, যেমন:
var bResult = "25" < "3"; alert(bResult); // ফলাফল "true"
এই কোডটি স্ট্রিং "25" এবং "3"-এর মধ্যে তুলনা করছে। দুটি অপারেটরই স্ট্রিং, তাই তাদের অক্ষরের কোড ("2"-এর অক্ষরের কোড 50, "3"-এর অক্ষরের কোড 51) তুলনা করা হয়。
কিন্তু, যদি কোনও অপারেটরকে সংখ্যায় রূপান্তরিত করা হয়, তবে ফলাফল আশ্চর্যজনক হবে:
var bResult = "25" < 3; alert(bResult); // ফলাফল "false"
এখানে, স্ট্রিং "25" সংখ্যা 25-এ রূপান্তরিত হয়, এবং সংখ্যা 3-এর সাথে তুলনা করা হয়, ফলাফল আশা করা মতো।
যখন কোনও সংখ্যা এবং স্ট্রিংকে তুলনা করা হয়, ECMAScript স্ট্রিংকে সংখ্যায় রূপান্তরিত করে, এবং তাদের সংখ্যায় ক্রমানুসারে তুলনা করে。
কিন্তু, যদি কোনও স্ট্রিং সংখ্যায় রূপান্তরিত করা যায় না, তবে কী হবে? নিচের উদাহরণ দেখুন:
var bResult = "a" < 3; alert(bResult);
আপনি এই কোডটির কী ফলাফল প্রত্যাশা করতে পারেন? অক্ষর "a" কোনও প্রাসঙ্গিক সংখ্যায় রূপান্তরিত করা যায় না। কিন্তু, যদি তাকে parseInt() মেথডের সাথে ব্যবহার করা হয়, তবে ফলাফল NaN। এই নিয়ম অনুযায়ী, যে কোনও NaN সম্পর্কিত সম্পর্ক অপারেটরটি false ফলাফল দেয়, তাই এই কোডটিও false ফলাফল দেয়:
var bResult = "a" >= 3; alert(bResult);
সাধারণত, যদি কোনও অপারেটরের দুটি মান কম হয়, তবে false ফলাফল দেয়, কিন্তু যদি কোনও সংখ্যা NaN, তবে এটা অল্পমাত্র নয়。
- পূর্ববর্তী পৃষ্ঠা জোড়া অপারেটর
- পরবর্তী পৃষ্ঠা সমতা অপারেটর