ECMAScript সমতা অপারেটর

দুইটি বদলকে সমান করা হতে পারে করা হতে পারে প্রোগ্রামিং ডিজাইনে একটি অত্যন্ত গুরুত্বপূর্ণ অপারেশন।প্রকৃত মানকে পদ্ধতি করার সময়, এই অপারেশন অত্যন্ত সহজ, কিন্তু অবজেক্টকে সংযুক্ত করার সময়, এই কাজ কিছুটা জটিল হতে পারে。

ECMAScript-এ, দুইটি সমানতা অপারেটর প্রদান করা হয়: সমানতা ও অসমানতা অপারেটরগুলি প্রকৃত মানকে এবং সমস্ত অবজেক্টকে পদ্ধতি করে, এবং সমস্ত অবজেক্টকে পদ্ধতি করে ও সমস্ত অবজেক্টকে পদ্ধতি করে。

সমানতা ও অসমানতা

ECMAScript-তে, সমানতা অপারেটর (==) দ্বিপদ সমানতা স্বীকৃতি (==) দ্বারা প্রদর্শিত হয়, যা দুইটি অপারেটর সমান হলেই true ফলাফল দেবে।অসমানতা অপারেটর (!=) হচ্ছে একটি হাইপণ সমানতা স্বীকৃতি (!=) দ্বারা প্রদর্শিত হয়, যা দুইটি অপারেটর অসমান হলেই true ফলাফল দেবে।দুইটি অপারেটরকে দুইটি অপারেটরকে সমানতা বা অসমানতা বিচার করার জন্য, উভয়ই টাইপ কনভারশন করে。

টাইপ কনভারশনের নিয়ম:

  • যদি একটি অপারেটর Boolean মান হয়, তবে সমানতা তুলনা করার আগে, তাকে সংখ্যা মানে রূপান্তর করা হবে; false 0-এর মান এবং true 1-এর মানের মতো。
  • যদি একটি অপারেটর স্ট্রিং এবং আরেকটি সংখ্যা হয়, তবে সমানতা তুলনা করার আগে, স্ট্রিংকে সংখ্যা হিসাবে রূপান্তর করা হবে。
  • যদি একটি অপারেটর অবজেক্ট এবং আরেকটি স্ট্রিং হয়, তবে সমানতা তুলনা করার আগে, অবজেক্টকে স্ট্রিং হিসাবে রূপান্তর করা হবে。
  • যদি একটি অপারেটর অবজেক্ট এবং আরেকটি সংখ্যা হয়, তবে সমানতা তুলনা করার আগে, অবজেক্টকে সংখ্যা হিসাবে রূপান্তর করা হবে。

তুলনা করার সময়, এই অপারেটর একসময় নিম্নলিখিত নিয়ম অনুসরণ করে:

  • null এবং undefined মান সমান
  • সমানতা তুলনা করার সময়, null এবং undefined-কে অন্য মানে রূপান্তর করা হতে পারে না。
  • যদি কোনও অপারেটর NaN হয়, তবে সমানতা অপারেটর (==) false ফলাফল দেবে, না তবে অসমানতা অপারেটর (!=) true ফলাফল দেবে。
  • যদি দুইটি অপারেটর অবজেক্ট হয়, তবে তাদের রেফারেন্স মানকেই তুলনা করা হবে।যদি দুইটি অপারেটর একই অবজেক্টে সুইচ করে, তবে সমানতা অপারেটর (==) true ফলাফল দেবে, না তবে দুইটি অপারেটর অসমান।

গুরুত্বপূর্ণ সতর্কতা:যদি দুইটি সংখ্যা প্রকৃতপক্ষে NaN হয়, তবে সমানতা অপারেটর (==) false ফলাফল দেবে, কারণ নিয়ম অনুযায়ী, NaN NaN-এর সমান নয়。

মূল তালিকায় কিছু বিশেষ ক্ষেত্র এবং তাদের ফলাফল উল্লেখ করা হয়েছে:

এক্সপ্রেশন মান
null == undefined true
"NaN" == NaN false
5 == NaN false
NaN == NaN false
NaN != NaN true
false == 0 true
true == 1 true
true == 2 false
undefined == 0 false
null == 0 false
"5" == 5 true

全等号和非全等号

等号和非等号的同类运算符是全等号和非全等号。这两个运算符所做的与等号和非等号相同,只是它们在检查相等性前,不执行类型转换。

全等号由三个等号表示(===),只有在无需类型转换运算数就相等的情况下,才返回 true。

উদাহরণ:

var sNum = "66";
var iNum = 66;
সমান নোটশিপ তিনটি সমান নোটশিপ (===) দ্বারা প্রতিনিধিত হয়, যেখানে সমানতা পরীক্ষা করা হয় তখনও নয় যদি অপরিবর্তিত করা হয় না, তবে সত্য হবে。
alert(sNum == iNum);	//আউটপুট "true"

alert(sNum === iNum); //আউটপুট "false"

অসমান নোটশিপ একটি হাইপহ্যান এবং দুই সমান নোটশিপ (!==) দ্বারা প্রতিনিধিত হয়, যেখানে সমানতা পরীক্ষা করা হয় তখনও নয় যদি অপরিবর্তিত করা হয় না, তবে সত্য হবে。

উদাহরণ:

var sNum = "66";
var iNum = 66;
alert(sNum != iNum);	//আউটপুট "false"
alert(sNum !== iNum);	//আউটপুট "true"

এখানে, প্রথম এলার্ট একটি অসমান নোটশিপ "66"-কে 66 সংখ্যা হিসাবে রূপান্তরিত করে, যার ফলে তা দ্বিতীয়টির 66 সংখ্যার সাথে সমান হয়। তাই, গণনা ফলাফল "ফ্যালস" হয়, কারণ দুটি আক্রমণকারী একই হয়। দ্বিতীয় এলার্টটি একটি অসমান নোটশিপ ব্যবহার করে। এই ক্রিয়াটিতে প্রশ্ন হয়: "sNum" এবং "iNum" কি ভিন্ন? এই প্রশ্নের উত্তর: হ্যাঁ (true), কারণ sNum একটি স্ট্রিং এবং iNum একটি সংখ্যা, তাই তারা ভিন্ন।