توسعه دهنده جاواسکریپت
مقایسه سطحی و عمیق در جاواسکریپت
یکی از دلایل عجیب بودن جاواسکریپت، رفتار متفاوت این زبان تو جاهای مختلف هست. تو زبان جاواسکریپت، رفتار عملگر مقایسه سطحی (( == )) و مقایسه عمیق (( === )) در جاهای مختلف میتونه متفاوت باشه. بریم ببینیم که مقایسه سطحی و عمیق تو جاواسکریپت چی هست؟
تو این نوشته قصد دارم مقایسه سطحی و عمیق در جاواسکرپیت رو بررسی کنم (البته به صورت خیلی ساده) و با استفاده از ( )Object.is راهکار بهتری برای مقایسه ارائه بدم.

اگر درمورد داینامیک تایپ بودن جاواسکریپت اطلاعات بیشتری میخواهید، به این مقاله مراجعه کنید:
ازونجایی که جاواسکریپت برای متغیرهاش تایپ در نظر نمیگیره، موقع چک کردن شرط مساوی و برابری، میتونه به ۲ شکل برخورد کنه. مقایسه کم عمق و مقایسه عمیق.
مقایسه عمیق، علاوه بر مقایسه مقدار، نوع متغیر رو هم مقایسه میکنه.
مقایسه کم عمق کاری به نوع متغیر نداره و همین موضوع باعث میشه تبدیل خودکار یک نوع به نوعی دیگر (coercion) به وجود بیاد.

برای مثال به این مقایسه های زیر دقت کنید:

این مواقع که جاواسکریپت رفتاری گیج کننده داره استفاده از متد Object.is میتونه کمک کنه!

بهترین و مطمئن ترین روش برای مقایسه دو چیز تو جاواسکریپت استفاده از متد Object.is هست
برای اینکه همه حالت های مقایسه سطحی، مقایسه عمیق و Object.is رو ببینید به شکل زیر دقت کنید:

در مورد عملگر تساوی جاواسکریپت و نحوه مقایسه اش بحث های عمیقی وجود داره که امیدوارم در آینده بتونم در مورد اونها هم بنویسم.
سایر نوشته های من در ویرگول:
Follow me on social media
Telegram
Virgool
مطلبی دیگر از این انتشارات
چگونه در سال ۱۳۹۷ یک برنامهنویس Front End عالی باشیم؟
مطلبی دیگر از این انتشارات
چرا وب اپ های پراگرسیو آینده وب سایت های ایرانی است؟
مطلبی دیگر از این انتشارات
استفاده کردن از پیش پردازنده Less یا Sass در پروژه های Angular CLI