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