برنامه نویسی

درک برابری در جاوا اسکریپت – انجمن DEV

برابری یکی از اساسی ترین مفاهیم در جاوا اسکریپت است، اما اگر با تفاوت های ظریف آن آشنا نباشید، می تواند کمی مشکل باشد. در این وبلاگ به دو نوع عملگر برابری می پردازیم: == و ===. بیایید آنها را تجزیه کنیم تا تفاوت های آنها و زمان استفاده از آنها را درک کنیم.

1️⃣ == (اجبار اجازه می دهد)

را == اپراتور برابری را بررسی می کند، اما اجازه نوع اجبار را می دهد. این بدان معناست که جاوا اسکریپت سعی می کند قبل از مقایسه مقادیر به یک نوع آنها را تبدیل کند.
📌 مثال:

console.log(5 == '5'); // true
console.log(false == 0); // true
console.log(null == undefined); // true
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

⁉️ توضیح
در این موارد، جاوا اسکریپت به زور یک نوع را به دیگری تبدیل می کند (یا مجبور می کند) تا مقایسه را ممکن کند. به عنوان مثال:

  • رشته '5' به اجبار وارد شماره می شود 5 قبل از مقایسه
  • false به اجبار وارد می شود 0.
  • null و undefined در برابری سست برابر در نظر گرفته می شوند.

🚨 هشدار:
در حالی که == ممکن است راحت به نظر برسد، می تواند منجر به نتایج غیرمنتظره شود، به خصوص هنگام مقایسه مقادیر انواع مختلف. همیشه هنگام استفاده از این عملگر، منطق خود را دوباره بررسی کنید.

2️⃣ === (اجبار اجازه نمی دهد)

را === اپراتور، همچنین به عنوان شناخته شده است اپراتور برابری دقیق، اجبار نوع انجام نمی دهد. هم مقدار و هم نوع عملوندها را با هم مقایسه می کند.
📌 مثال:

console.log(5 === '5'); // false
console.log(false === 0); // false
console.log(null === undefined); // false
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

⁉️ توضیح
در اینجا، هیچ تبدیل نوع اتفاق نمی افتد. عملوندها باید از نظر مقدار و نوع مطابقت داشته باشند تا مقایسه برگردد true. این باعث می شود === یک گزینه مطمئن تر و قابل پیش بینی تر

🤔 اجبار چیست؟

به زبان ساده، اجبار، روش جاوا اسکریپت برای «مقاعد کردن اجباری» یک نوع ارزش برای تبدیل به دیگری برای مقایسه است.

مثال زندگی واقعی: مقایسه سیب و پرتقال
تصور کنید دارید یک سیب و یک پرتقال را با هم مقایسه می کنید:
1️⃣ == (برابری سست)
مثل این است که بگوییم: «سیب همان پرتقال است اگر هر دو میوه باشند». در اینجا، شما فقط روی دسته آنها (نوع اجبار) تمرکز می کنید.

🍎 == 🍊 → True (Both are fruit)
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

2️⃣ === (برابری دقیق)
مثل این است که بگوییم “سیب فقط در صورتی برابر با پرتقال است که دقیقاً همان میوه باشد.” هیچ اجبار یا تبدیلی در اینجا اتفاق نمی افتد.

 🍎 === 🍊 → False (One is an apple, the other is an orange)
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

💡 بهترین شیوه ها

1️⃣ استفاده کنید === به طور پیش فرض

  • برابری دقیق از نتایج غیرمنتظره ناشی از اجبار جلوگیری می کند.

2️⃣ استفاده کنید == فقط در صورت لزوم

  • اگر عمداً از نوع اجبار استفاده می کنید (مثلاً هنگام مقایسه صفر و تعریف نشده)، استدلال خود را به وضوح مستند کنید.

💻 آن را امتحان کنید:

console.log("== Case 1 ==")
const var1 = '10'
const var2 = '10'
console.log(var1 == var2) // Output: true
console.log(var1 === var2) // Output: true

console.log("== Case 2 ==")
const var3 = '10'
const var4 = 10
console.log(var3 == var4) // Output: true // JavaScript automatically coercion variable var4 to var3 string type
console.log(var3 === var4) // Output: false // Must ensure both value have same datatype

console.log("== Case 3 ==")
const var5 = ''
const var6 = 10
console.log(var5 == var6) // Output: false
console.log(var5 === var6) // Output: false

console.log("== Case 4 ==")
const var7 = ''
const var8 = 10
console.log(var7 == var8) // Output: false
console.log(var7 === var8) // Output: false

console.log("== Case 5 ==")
const var9 = 0
const var10 = ''
console.log(var9 == var10) // Output: true
console.log(var9 === var10) // Output: false

console.log("== Case 6 ==")
const var11 = false
const var12 = ''
console.log(var11 == var12) // Output: true
console.log(var11 === var12) // Output: false

console.log("== Case 7 ==")
const var13 = null
const var14 = undefined
console.log(var13 == var14) // Output: true
console.log(var13 === var14) // Output: false
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

نتیجه گیری

== اجازه اجبار نوع را می دهد و می تواند منجر به مقایسه های غیرمنتظره شود. === سخت‌گیرانه‌تر است و تطابق مقدار و نوع را تضمین می‌کند. درک اجبار می تواند به شما کمک کند کدهای قابل پیش بینی تر و بدون اشکال بنویسید.

کد نویسی مبارک! ✨

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا