জাভাস্ক্রিপ্টে সমতা তুলনা করার চারটি উপায় আছে। এই নিবন্ধটি সমতা নির্ধারণের জন্য ব্যবহৃত অনন্য অপারেটর সম্পর্কে কথা বলে, কি ধরনের জবরদস্তি হয় এবং জাভাস্ক্রিপ্ট ভাষায় সত্য বা মিথ্যা মূল্যের মূল্যায়ন করার সময় কিছু বৈচিত্র্যের সম্মুখীন হয়৷
কঠোর সমতা তুলনা
কঠোর সমতা অপারেটর একটি ট্রিপল সমান চিহ্ন (===) দ্বারা প্রতিনিধিত্ব করা হয়। এই অপারেটরের উদ্দেশ্য শুধুমাত্র মান নয়, এর ধরনও তুলনা করা।
const strictComparison = (a, b) => { console.log(typeof a); console.log(typeof b); return a === b; } strictComparison(8, '8'); //false
strictComparison
উপরের উদাহরণে ফাংশন দুটি মান গ্রহণ করে এবং দুটি মান একে অপরের সাথে কঠোরভাবে সমান কিনা তা ফেরত দেয়।
প্রথম নজরে, মানগুলি একই দেখায় কারণ উভয়ই 8
মান . যাইহোক, কঠোর সমতা অপারেটরও ধরন দেখে। আমরা যদি a
তাকাই এই উদাহরণে, এবং
দেখুন typeof a
,
এটি ‘number’
ফেরত দেবে . আমরা যদি b
এর জন্যও একই কাজ করতাম , typeof b
সহ ,
এটি ‘string’
ফেরত দেবে .
যেহেতু প্রকারগুলি একই নয়, এটি false
ফেরত দেবে .
এর সাথে অস্বাভাবিক তুলনা ===
জাভাস্ক্রিপ্টে কঠোর সমান অপারেটরের সাথে কিছু অস্বাভাবিক তুলনা করা যেতে পারে। এখানে এমন কিছু রয়েছে যা সাধারণত সাক্ষাত্কারের পরিস্থিতিতে জিজ্ঞাসা করা হয়:
Operand1 | typeof Operand1 | Operand2 | typeof Operand2 | রিটার্ন মান |
শূন্য | অবজেক্ট | শূন্য | অবজেক্ট | সত্য |
অনির্ধারিত | অনির্ধারিত | অনির্ধারিত | অনির্ধারিত | সত্য |
শূন্য | অবজেক্ট | অনির্ধারিত | অনির্ধারিত | মিথ্যা |
NaN | সংখ্যা | NaN | সংখ্যা | মিথ্যা |
মিথ্যা | বুলিয়ান | “মিথ্যা” | স্ট্রিং | মিথ্যা |
মিথ্যা | বুলিয়ান | মিথ্যা | বুলিয়ান | সত্য |
“” | স্ট্রিং | "" | স্ট্রিং | সত্য |
“” | স্ট্রিং | অনির্ধারিত | অনির্ধারিত | মিথ্যা |
উল্লেখ্য আরেকটি বিষয় হল এটি ডেটা স্ট্রাকচারের সাথে তুলনা করবে না। অ্যারে বা বস্তুর তুলনা করার জন্য আপনাকে আরও পরিশীলিত বিবৃতি ব্যবহার করতে হবে।
এখানে বেশিরভাগ এন্ট্রি তারা যেভাবে করে তা মূল্যায়ন করে কারণ প্রকারগুলি মেলে বা মেলে না। একটি ব্যতিক্রম হল NaN
- এটি false
মূল্যায়ন করে কারণ NaN
তাত্ত্বিকভাবে কিছু হতে পারে - তাই এটি সমান হতে পারে কি না কোন ইঙ্গিত নেই, তাই মিথ্যা মূল্যায়ন করা।
81% অংশগ্রহণকারী বলেছেন যে তারা বুটক্যাম্পে যোগ দেওয়ার পরে তাদের প্রযুক্তিগত কাজের সম্ভাবনা সম্পর্কে আরও আত্মবিশ্বাসী বোধ করেছেন। আজই একটি বুটক্যাম্পের সাথে মিলিত হন৷
৷গড় বুটক্যাম্প গ্র্যাড একটি বুটক্যাম্প শুরু করা থেকে শুরু করে তাদের প্রথম চাকরি খোঁজা পর্যন্ত ক্যারিয়ারের পরিবর্তনে ছয় মাসেরও কম সময় কাটিয়েছে।
কঠোর অসমতার তুলনা
কঠোর অসমতা অপারেটর একটি বিস্ময়বোধক বিন্দু এবং দুটি সমান চিহ্ন (!==) দ্বারা প্রতিনিধিত্ব করা হয়। এটি মূল্যায়ন করবে যে দুটি মান মান এবং প্রকারে সমান নয় কিনা।
const strictInequalityComparison = (a, b) => { console.log(typeof a); console.log(typeof b); return a !== b; } strictInequalityComparison("8", 8); //true
strictInequalityComparison
উপরের উদাহরণে ফাংশন দুটি মান গ্রহণ করে এবং দুটি মান একে অপরের সাথে কঠোরভাবে সমান না হয় কিনা তা ফেরত দেয়।
প্রথম নজরে, মানগুলি সমান দেখায় (এবং অসম নয়) কারণ উভয়েরই একই মান রয়েছে৷ যাইহোক, কঠোর অসমতা অপারেটর, কঠোর সমতা অপারেটরের মতো, টাইপটিও দেখে।
আমরা যদি a
তাকাই এই উদাহরণে, এবং typeof a
দেখুন , এটি ‘string’
ফেরত দেবে . আমরা যদি b
এর জন্যও একই কাজ করতাম , typeof b
সহ , এটি ‘number’
ফেরত দেবে . কারণ প্রকারগুলি একই নয়, এটি
ফেরত দেবে true
.
এর সাথে অস্বাভাবিক তুলনা!==
জাভাস্ক্রিপ্টে কঠোর অসমতা অপারেটরের সাথে কিছু অস্বাভাবিক তুলনা করা যেতে পারে। এখানে সাক্ষাত্কারের পরিস্থিতিতে কিছু জিজ্ঞাসা করা হয়:
Operand1 | typeof Operand1 | Operand2 | typeof Operand2 | রিটার্ন মান |
শূন্য | অবজেক্ট | শূন্য | অবজেক্ট | মিথ্যা |
অনির্ধারিত | অনির্ধারিত | অনির্ধারিত | অনির্ধারিত | মিথ্যা |
শূন্য | অবজেক্ট | অনির্ধারিত | অনির্ধারিত | সত্য |
NaN | সংখ্যা | NaN | সংখ্যা | সত্য |
মিথ্যা | বুলিয়ান | “মিথ্যা” | স্ট্রিং | সত্য |
মিথ্যা | বুলিয়ান | মিথ্যা | বুলিয়ান | মিথ্যা |
“” | স্ট্রিং | "" | স্ট্রিং | মিথ্যা |
“” | স্ট্রিং | অনির্ধারিত | অনির্ধারিত | সত্য |
কঠোর সমতা অপারেটরের মতো, বস্তু বা অ্যারের মধ্যে তুলনা করা যায় না।
আরো একটি জিনিস…
আপনার জাভাস্ক্রিপ্ট ডেভেলপমেন্ট ক্যারিয়ারের বেশিরভাগ পরিস্থিতিতে, এই দুটি অপারেটর, ===এবং !==, সেইগুলিই হবে যেগুলি দিয়ে আপনি আপনার শর্তযুক্ত যুক্তি লিখবেন৷
লুজ সমতা তুলনা
আলগা সমতা অপারেটর একটি ডবল সমান চিহ্ন (==) দ্বারা প্রতিনিধিত্ব করা হয়। এই অপারেটরের উদ্দেশ্য হল উভয় মান সমান কিনা তা মূল্যায়ন করার আগে একটি সাধারণ প্রকারে জোর করা। একে বলা হয় টাইপ জবরদস্তি অথবা প্রকার রূপান্তর .
const looseComparison = (a, b) => { console.log(typeof a); console.log(typeof b); return a == b; } strictComparison(8, '8'); //true
looseComparison
উপরের উদাহরণে ফাংশন দুটি মান গ্রহণ করে এবং দুটি মান একে অপরের সমান হয় কিনা তা ফেরত দেয়।
প্রথম নজরে, মানগুলি একই দেখায় না কারণ একটি একটি সংখ্যা এবং একটি একটি স্ট্রিং৷ যাইহোক, আলগা সমতা অপারেটর প্রকারের দিকে তাকায় না। বিবৃতিটি মান তুলনা করার আগে প্রকারগুলিকে একই হতে বাধ্য করার চেষ্টা করবে — সুতরাং উদাহরণটি সত্য হবে কারণ দ্বিতীয় অপারেন্ডটি একটি সংখ্যায় রূপান্তরিত হয় এবং তারপরে তুলনা করা হয়।
এর সাথে অস্বাভাবিক তুলনা ==
জাভাস্ক্রিপ্টে কঠোর সমান অপারেটরের সাথে কিছু অস্বাভাবিক তুলনা করা যেতে পারে। এখানে সাক্ষাত্কারের পরিস্থিতিতে কিছু জিজ্ঞাসা করা হয়:
Operand1 | typeof Operand1 | Operand2 | typeof Operand2 | রিটার্ন মান |
শূন্য | অবজেক্ট | শূন্য | অবজেক্ট | সত্য |
অনির্ধারিত | অনির্ধারিত | অনির্ধারিত | অনির্ধারিত | সত্য |
শূন্য | অবজেক্ট | অনির্ধারিত | অনির্ধারিত | সত্য |
NaN | সংখ্যা | NaN | সংখ্যা | মিথ্যা |
মিথ্যা | বুলিয়ান | “মিথ্যা” | স্ট্রিং | মিথ্যা |
মিথ্যা | বুলিয়ান | মিথ্যা | বুলিয়ান | সত্য |
“” | স্ট্রিং | "" | স্ট্রিং | সত্য |
“” | স্ট্রিং | অনির্ধারিত | অনির্ধারিত | মিথ্যা |
এখানে বেশিরভাগ এন্ট্রিগুলি কঠোর সমতার প্রথম বিভাগে যেমনটি করেছিল তেমনই মূল্যায়ন করে। উল্লেখযোগ্য ব্যতিক্রম হল যে শূন্য এবং অনির্ধারিত ঢিলেঢালাভাবে সত্যের সাথে তুলনা করা মূল্যায়ন।
আলগা বৈষম্য তুলনা
আলগা অসমতা অপারেটর একটি বিস্ময়বোধক বিন্দু এবং একটি সমান চিহ্ন (!=) দ্বারা প্রতিনিধিত্ব করা হয়। এটি মূল্যায়ন করবে যে দুটি মান শুধুমাত্র মান সমান নয় কিনা। এটি উভয় আর্গুমেন্টকে একই ধরণের হতে রূপান্তর করার চেষ্টা করে এটি করে।
const looseInequalityComparison = (a, b) => { console.log(typeof a); console.log(typeof b); return a != b; } looseInequalityComparison("8", 8); //false
looseInequalityComparison
উপরের উদাহরণে ফাংশন দুটি মান নেয় এবং দুটি মান একে অপরের সমান না হয় কিনা তা ফেরত দেয়।
প্রথম নজরে, মানগুলি সমান দেখায় কারণ তাদের উভয়েরই একই মান রয়েছে। যাইহোক, লুজ ইকুয়ালিটি অপারেটর, লুজ ইকুয়ালিটি অপারেটরের মতো, তুলনা করার আগে উভয় অপারেন্ডে টাইপটিকে একই হতে বাধ্য করে। কারণ জবরদস্তির পরে মানগুলি একই, এটি false
ফিরে আসবে .
!=
এর সাথে অস্বাভাবিক তুলনা
কিছু অস্বাভাবিক তুলনা আছে যা জাভাস্ক্রিপ্টে আলগা অসমতা অপারেটরের সাথে করা যেতে পারে। এখানে সাক্ষাত্কারের পরিস্থিতিতে কিছু জিজ্ঞাসা করা হয়:
Operand1 | typeof Operand1 | Operand2 | typeof Operand2 | রিটার্ন মান |
শূন্য | অবজেক্ট | শূন্য | অবজেক্ট | মিথ্যা |
অনির্ধারিত | অনির্ধারিত | অনির্ধারিত | অনির্ধারিত | মিথ্যা |
শূন্য | অবজেক্ট | অনির্ধারিত | অনির্ধারিত | মিথ্যা |
NaN | সংখ্যা | NaN | সংখ্যা | সত্য |
মিথ্যা | বুলিয়ান | “মিথ্যা” | স্ট্রিং | সত্য |
মিথ্যা | বুলিয়ান | মিথ্যা | বুলিয়ান | মিথ্যা |
“” | স্ট্রিং | "" | স্ট্রিং | মিথ্যা |
“” | স্ট্রিং | অনির্ধারিত | অনির্ধারিত | সত্য |
কঠোর সমতা অপারেটরের মতো, বস্তু বা অ্যারের মধ্যে তুলনা করা যায় না।
এখানে বেশিরভাগ এন্ট্রি কঠোর বৈষম্যের উপর দ্বিতীয় বিভাগে যেমন মূল্যায়ন করেছিল তেমনই মূল্যায়ন করে। উল্লেখযোগ্য ব্যতিক্রম হল যে শূন্য এবং অনির্ধারিত শিথিলভাবে মূল্যায়নকে মিথ্যার সাথে তুলনা করা হয়।
উপসংহার
এই নিবন্ধটি জাভাস্ক্রিপ্টে সমতা তুলনা করার চারটি উপায় দেখেছে। মনে রাখা প্রধান জিনিস হল ট্রিপল সমান (===) এবং ডবল সমান (==) একই অপারেটর নয়। একটি টাইপ এবং মানের উপর কঠোরভাবে মূল্যায়ন করে এবং অন্যটি একই ধরণের হতে বাধ্য করার চেষ্টা করার পরে শুধুমাত্র মানটি মূল্যায়ন করে।