توسعه دهنده جاواسکریپت
مقایسه سطحی و عمیق در جاواسکریپت
یکی از دلایل عجیب بودن جاواسکریپت، رفتار متفاوت این زبان تو جاهای مختلف هست. تو زبان جاواسکریپت، رفتار عملگر مقایسه سطحی (( == )) و مقایسه عمیق (( === )) در جاهای مختلف میتونه متفاوت باشه. بریم ببینیم که مقایسه سطحی و عمیق تو جاواسکریپت چی هست؟
تو این نوشته قصد دارم مقایسه سطحی و عمیق در جاواسکرپیت رو بررسی کنم (البته به صورت خیلی ساده) و با استفاده از ( )Object.is راهکار بهتری برای مقایسه ارائه بدم.
اگر درمورد داینامیک تایپ بودن جاواسکریپت اطلاعات بیشتری میخواهید، به این مقاله مراجعه کنید:
ازونجایی که جاواسکریپت برای متغیرهاش تایپ در نظر نمیگیره، موقع چک کردن شرط مساوی و برابری، میتونه به ۲ شکل برخورد کنه. مقایسه کم عمق و مقایسه عمیق.
مقایسه عمیق، علاوه بر مقایسه مقدار، نوع متغیر رو هم مقایسه میکنه.
مقایسه کم عمق کاری به نوع متغیر نداره و همین موضوع باعث میشه تبدیل خودکار یک نوع به نوعی دیگر (coercion) به وجود بیاد.
برای مثال به این مقایسه های زیر دقت کنید:
این مواقع که جاواسکریپت رفتاری گیج کننده داره استفاده از متد Object.is میتونه کمک کنه!
بهترین و مطمئن ترین روش برای مقایسه دو چیز تو جاواسکریپت استفاده از متد Object.is هست
برای اینکه همه حالت های مقایسه سطحی، مقایسه عمیق و Object.is رو ببینید به شکل زیر دقت کنید:
در مورد عملگر تساوی جاواسکریپت و نحوه مقایسه اش بحث های عمیقی وجود داره که امیدوارم در آینده بتونم در مورد اونها هم بنویسم.
سایر نوشته های من در ویرگول:
Follow me on social media
Telegram
Virgool
مطلبی دیگر از این انتشارات
push.js | کتابخانه ای برای ارسال Push Notifications
مطلبی دیگر از این انتشارات
آرایه گردی در جاوااسکریپت!
مطلبی دیگر از این انتشارات
فانکشنال js بدون درد و خونریزی - بخش دو compose