- Strict Equality
- a === b
- با سه علامت مساوی یا ===
- Loose Equality
- a == b
- با دو علامت مساوی یا ==
- Same Value Equality
- Object.is(a, b)
۱. روش مقایسه Same Value Equality
به دلیل تشابه رفتار روش Same Value Equality با مدل ذهنی ما در پستهای قبلی انواع مقدارها یا Values و متغیرها یا Variables از این روش شروع کردیم. پس از مشاهده کدهای زیر مدل ذهنی آن را تصور کرده و سپس نتیجه را حدس بزنید. ( با در نظر گرفتن این مورد که خروجی متد فقط در صورتی برابر true است که دو متغیر ورودی آن دقیقا به یک مقدار در دنیای جاوااسکریپت اشاره میکنند.) حال اجازه دهید مثالی با استفاده از مقادیر دستهی Objects and Functions را بررسی کنیم. به نحوهی شکل گیری گام به گام مدل ذهنی توجه کنید. نتیجه نهایی نتایج مورد نظر با توجه به مدل ذهنی بالا۲. روش مقایسهی Strict Equality
این روش مشابه روش قبل عمل مقایسه را انجام میدهد بجز دو مورد نادر زیر که استثنا هستند.- NaN === NaN
- که خروجی false را برمی گرداند درصورتی که هر دو یک شیئ از دستهی Primitive هستند و مقدار مورد نظر true است.
- -0 === 0 یا 0 === -0
- که خروجی true را بر میگرداند در صورتی که دو مقدار 0 و -0 دو مقدار متفاوت هستند.
۳. روش مقایسهی Loose Equality
این روش که به آن روش مقایسهای انتزاعی نیز میگویند یک روش مقایسهای گیج کننده است. به نتایج استفاده از این روش در کد زیر توجه کنید. این روش بصورت گسترده به عنوان یک تصمیم بد در طراحی اولیه شناخته شدهاست و بسیاری از استانداردها برنامه نویسی جاوااسکریپت استفاده از == و =! را منع کردهاند.استفاده از این روش در پروژههای جدید کاملا غیر معمول است و به همین خاطر بیشتر راجع به آن حرف نمیزنیم. اگر شما علاقه دارید بدانید این روش چگونه کار میکند به == Loose equality using مراجعه کنید.