JavaScript-এ নিচের সম্পর্কমূলক ও সমতামূলক অপারেটরগুলো দিয়ে সংখ্যা তুলনা করা যায়।
| তুলনা | অপারেটর |
|---|---|
| বড় | a > b |
| বড় বা সমান | a >= b |
| ছোট | a < b |
| ছোট বা সমান | a <= b |
| (কঠোর) সমান | a === b |
| (কঠোর) সমান নয় | a !== b |
তুলনার ফলাফল সবসময় একটি বুলিয়ান মান হয়, অর্থাৎ হয় true নয়তো false।
1 < 3;
// => true
2 !== 2;
// => false
1 === 1.0;
// => true
// All numbers are floating-points, so this is different syntax
// for the exact same value.
JavaScript-এ উপরের সম্পর্কমূলক ও সমতামূলক অপারেটরগুলো দিয়ে স্ট্রিংও তুলনা করা যায়। সেক্ষেত্রে অভিধানের ক্রম (লেক্সিকোগ্রাফিক ক্রম) অনুসরণ করা হয়। সব ক্যারেক্টারের সঠিক ক্রমের একটি তালিকা এখানে পাবেন।
'Apple' > 'Pear';
// => false
'a' < 'above';
// => true
'a' === 'A';
// => false
দুটি ভ্যারিয়েবলের মধ্যে সংখ্যার মতো মান আছে বলে মনে হলেও তাদের টাইপ যদি স্ট্রিং হয়, তাহলে তুলনা করার সময় সাবধান থাকতে হবে।
অভিধানের ক্রম অনুসারে ফলাফল Number টাইপের মান তুলনা করার মতো হবে না।
10 < 2;
// => false
'10' < '2';
// => true (because "1" comes before "2")
স্ট্রিং তুলনা করার আরেকটি উপায় হলো localeCompare মেথড। এটি স্ট্রিং কীভাবে তুলনা করা হবে তা ঠিক করার জন্য বিভিন্ন অপশন সেট করার সুযোগ দেয়।
JavaScript-এ সমতা যাচাইয়ের জন্য তিনটি সমান চিহ্ন কেন, তা নিয়ে আপনার মনে প্রশ্ন আসতে পারে।
=== দিয়ে কঠোর সমতা যাচাই করা বোঝায়, অর্থাৎ কোনো টাইপ কনভার্সন করা হয় না এবং ভিন্ন টাইপের মান কখনোই সমান হয় না।
'3' === 3;
// => false
// The value on the left has type string, the value on the right
// has type number.
1 === 1n;
// => false
// The value on the left has type number, the value on the right
// has type bigint.
JavaScript-এ সমতা যাচাইয়ের জন্য === ও !== ব্যবহার করাই সুপারিশ করা হয়।
আরও আছে == ও !=, যেগুলো শিথিল সমতা যাচাই করে।
এগুলো এড়িয়ে চলা উচিত, কারণ এরা তুলনা করার আগে অন্তর্নিহিত টাইপ কনভার্সন প্রয়োগ করে।
এ ধরনের ক্ষেত্রে ফলাফল অনুমান করা কঠিন এবং কখনো কখনো প্রত্যাশার বাইরে চলে যায়।
এ সম্পর্কে আরও পড়তে পারেন এখানে।
0 == false;
// => true
তত্ত্বগতভাবে ভিন্ন টাইপের মানও ("1" < 2 এর মতো) তুলনা করা যায়।
তখন ফলাফল true না false তা নির্ধারণ করতে মানগুলো অন্তর্নিহিতভাবে কনভার্ট করা হয়।
শিথিল সমতা যাচাইয়ের মতোই, উপরে উল্লেখিত একই কারণে এটিও সুপারিশ করা হয় না।
তাহলে এর বদলে কী করা উচিত? আপনি স্পষ্ট টাইপ কনভার্সন ব্যবহার করতে পারেন। এভাবে আপনি তুলনা করার আগে মানগুলোর সঠিক টাইপ নিশ্চিত করতে পারবেন। তাহলে আপনার কোড বোঝা সহজ হবে এবং ভুলের সম্ভাবনাও কমবে।