همون طوری که می دونید جاوا اسکریپت یک زبان dynamically typed یا loosely typed هست یعنی وقتی متغیر تعریف میکنیم نیازی نیست قبلش مشخص کنیم چه نوع مقداری میخواهیم داخلش نگه داریم یا موقعی که یک متغیر مثلا از نوع عددی داریم و میخواهیم مقدارش رو تغییر بدیم به نوع دیگری مثل string به راحتی میتوانیم این کار رو انجام دهیم.
بررسی نوع متغیر ها و مقادیر اونها یکی از مهمترین قسمت های برنامه نویسی هست و این مورد در جاوا اسکریپت با توجه به نکته ای که گفتیم کمی پیچیده تر هم میشه مخصوصا اگر بدونیم جاوا اسکریپت کلی رفتار متفاوت در شناسایی انواع مختلف متغیر ها داره که در ادامه با هم اونها رو میبینیم.
بررسی Data Type های جاوا اسکریپت:
جاوا اسکریپت ۶ نوع متغیر داره(تا قبل ES6) که به صورت زیر هستند:
1. String
2. Number
3. Boolean
4. null
5. undefined
6. Object
شاید انتظار داشتیم Array و یا Function رو هم تو این لیست ببینیم ولی اونها تنها پیاده سازی خاصی از object هستند.
یه نکته ای رو هم اضافه کنم، در ES6 یک نوع جدید به اسم Symbol هم اضافه شده که پس در مجموع ۷ نوع متغیر شدند که به دو دسته تقسیم می شوند:
دسته اول primitive types:
یعنی تمام ۶ نوع اول به جز object، این نوع از متغیر ها مقادیر ساده ای را در حافظه نگه میدارند.
دسته دوم reference type:
شامل object که مجموعه ای از داده هایی هست که با name و value شناسایی می شوند.
استفاده از typeof برای شناسایی نوع متغیر:
با استفاده از typeof می تونیم نوع متغیر رو تشخیص دهیم تا باتوجه به نوع و مقدار اون یک عملیات خاص رو انجام بدیم یا تصمیم گیری در روند کدمون داشته باشیم.
اما این مورد همیشه هم طبق اون چیزی که انتظار داریم عمل نمیکنه! پس باید کاملا رفتار اون رو درک کنیم.
یک مثال ساده از typeof:
خوب ۲ تا متغیر داشتیم یکی عدد صحیح و یکی عدد اعشاری که هر دوی اونها رو از نوع number شناسایی کرد پس همون طور که دیدیم نوع float و integer نداریم و همه ی اعداد در جاوا اسکریپت از نوع number هستند.
اما چند تا از موارد کمی عجیب از typeof رو با هم ببینیم:
خوب این یکی از مواردی هست که از ابتدای جاوا اسکریپت بوده و هست و خواهد بود! پس انتظار نداشته باشید typeof روی null به شما ‘null’ برگردونه چون قراره object بگیرید!
جاوا اسکریپت و NaN!:
زمانی که اعمال ریاضی در جاوا اسکریپت انجام میدیم، هرموقع که مقادیر ورودی ما قابلیت انجام عمل ریاض رو نداشته باشنید احتمالا جواب NaN میگیریم که یعنی Not a Number ! اما این NaN خودش رفتار عجیبی داره که با هم میبینیم!!
شما اگر مواردی مثل:
- تقسم ۰ با ۰
- تقسیم Infinity با Infinity
- ضرب صفر در Infinity
- استفاده از متغیر غیر قابل تبدیل به عدد در محاسبات ریاضی
- و….
در آخر چند تا از خروجی های typeof در موارد مختلف رو با هم ببینیم:
نتیجه گیری:
در این پست با سیستم data type در جاوا اسکریپت آشنا شدیم و دیدیم که چه نوع متغیر هایی داریم و چطوری با استفاده از typeof می تونیم اونها رو بررسی کنیم و همین طور دیدیم که با توجه به بعضی خروجی های گمراه کننده typeof چطور از روش های دیگری استفاده کنیم.
نویسنده: صدف امینی نیا
دیدگاهتان را بنویسید