ای سی ایم اس مساوی آپریشن

بررسی برابری دو متغیر در طراحی برنامه بسیار مهم است. در برخورد با مقادیر اولیه، این عمل بسیار ساده است، اما در مورد شیء، کار کمی پیچیده‌تر است.

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"

在这段代码中,第一个 alert 使用等号来比较字符串 "66" 和数字 66,输出 "true"。如前所述,这是因为字符串 "66" 将被转换成数字 66,,然后才与另一个数字 66 进行比较。第二个 alert 使用全等号在没有类型转换的情况下比较字符串和数字,当然,字符串不等于数字,所以输出 "false"。

非全等号由感叹号加两个等号(!==)表示,只有在无需类型转换运算数不相等的情况下,才返回 true。

مثال میں:

var sNum = "66";
var iNum = 66;
alert(sNum != iNum);	//نتیجہ "false"
alert(sNum !== iNum);	//نتیجہ "true"

یہاں، پہلی بار alert غیر مساوی نمبر استعمال کیا گیا، جس سے ناگrod 66 کو نمبر 66 میں تبدیل کیا جاتا ہے، جس سے یہ دوسرے نمبر 66 سے مساوی ہوتا ہے۔ اس لئے محاسبه کا نتیجہ "false" ہوتا ہے، کیونکہ دو نمبر مساوی ہیں۔ دوسری بار alert میں غیر مساوی نمبر استعمال کیا گیا، جو کہ یہ سوال پوچھتا ہے: "sNum" اور "iNum" کس طرح مختلف ہیں؟ اس سوال کا جواب ہے: ہاں (true)، کیونکہ sNum ایک ناگrod ہے اور iNum ایک نمبر ہے، وہاں تک مختلف ہیں。