این یکی از ساده‌ترین سوال‌ها هست اما یک سری نکاتی جالبی وجود داره. برای مقایسه آیتم‌ها وقتی عملگر دو مساوی استفاده بشه، یک کار اضافه‌تر نسبت به سه مساوی انجام می‌گیره.

وقتی از دو مساوی استفاده ‌می‌کنیم، عمل مقایسه مقدارها بعد از تبدیل نوع موقت صورت می‌گیره. برای مثال وقتی یک عدد و یک رشته رو با «دو مساوی» مقایسه می‌کنیم، ابتدا بطور موقت رشته تبدیل به عدد میشه و سپس مقایسه واقعی صورت می‌گیره:

let x = 29;
let y = "29";

x == y;

// 1. Convert y to a number
// 2. Compare 29 with 29

پس زمانی که از دو مساوی (==) استفاده می‌کنیم باید در نظر داشته باشیم که موارد زیر با هم مساوی هستن:

5 == '5'            // true
0 == ''             // true
0 == '0'            // true
0 == false          // true

اما توی مقایسه با سه مساوی هیچ تبدیل نوعی انجام نمی‌گیره و دو طرف مقایسه زمانی برابر هستن که نوع‌ها هم برابر باشن.

بهتره که سه مساوی رو ترجیح بدیم به دو مساوی. چون اولا با خروجی غیر منتظره کمتری رو به رو میشیم. مقایسه‌های مثال بالا اگه با سه مساوی انجام بشن همگی false هستن. و همچنین چون تبدیل نوعی انجام نمی‌گیره، سه مساوی سریع‌تر از دو مساوی عمل می‌کنه.

 

منبع: