یک متغیر در جاوا اسکریپت می‌تواند هر نوع داده‌ای را بپذیرد. می‌تواند در لحظه‌ای یک عدد صحیح و در لحظه دیگر یک رشته (متن یا یک حرف) باشد:

به زبان‌های برنامه نویسی که اجازه چنین کاری را می‌دهند، “زبان‌های پویا” گفته می‌شود. یعنی در این زبان‌ها انواع داده وجود دارد، اما متغیرها محدود به هیچکدام از این انواع داده نیستند.

هفت نوع داده اساسی وجود دارد که در ادامه به بررسی تک‌تک آن‌ها خواهیم پرداخت.


۱- اعداد (Numbers)

نوع اعداد متعلق به اعداد صحیح و اعشاری می‌شود.

عملگرهای زیادی برای اعداد وجود دارد، که مهم‌ترین آن‌ها عبارتند از:

  • جمع (addition): +
  • تفریق (subtraction): -
  • ضرب (multiplication): *
  • تقسیم (division): /

علاوه‌بر اعداد عادی (regular numbers)، اعدادی وجود دارد که به آن‌ها “اعداد خاص (special numbers)” گفته می‌شود. انواع این اعداد به عبارت زیر است:

  • مثبت بی‌نهایت: Infinity
  • منفی بی‌نهایت: Infinity-
  • ارور محاسباتی: NaN

در این مثال نوع Infinity و Infinity- را مشاهده می‌کنید:

تقسیم عدد صحیح و اعشاری بر صفر، بی‌نهایت می‌شود. حال اگر عدد مثبت بود، مثبت بی‌نهایت و اگر منفی بود، منفی بی‌نهایت می‌شود.

و در مثال زیر نوع Nan را مشاهده می‌کنید:

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

دقت داشته باشید که اگر در یک عبارت محاسباتی یک ارور NaN داشته باشیم، تمام آن عبارت Nan می‌شود:

حال اگر در یک طرف رشته‌ای از اعداد و در طرف دیگر خود اعداد را داشته باشیم:

همانطور که مشاهده می‌کنید، عملگر جمع هر دو طرف خود را رشته در نظر می‌گیرد و طرف سمت راستش را به انتهای طرف سمت چپ می‌چسباند.

اما سایر عملگرها هر دو طرف را عدد در نظر گرفته و حاصل را بدست می‌آورند.

درضمن دقت کنید که فرقی ندارد در سمت راست یا چپ عملگر عدد باشد یا رشته.


2- رشته (String)

رشته‌ (متن و حرف) باید بین دو علامت نقل‌قول " (کوتیشن یا کوت) قرار بگیرد.

در جاوا اسکریپت سه نوع کوت داریم:

  • سینگل کوت (Single quote): '
  • دابل کوت (Double quote): "
  • بک کوت (Back quote): `

سینگل و دابل کوت هیچگونه تفاوتی با هم ندارند:

بک کوت به ما اجازه می‌دهد تا سایر متغیرها را درون رشته‌ به کار ببریم:

همانطور که در مثال بالا می‌بینید، برای استفاده از این ویژگی باید رشته را درون بک کوت قرار بدهیم و متغیری که می‌خواهیم در رشته جایگذاری شود را درون { … }$ بنویسیم.

دقت کنید که این ویژگی فقط مربوط به بک کوت می‌باشد و بقیه کوت‌ها این ویژگی را ندارند:


۳- بولین (Boolean)

نوع بولین (عملگرهای منطقی) تنها دو مقدار دارد و برای بررسی “صحیح یا غلط” بودن استفاده می‌شود:

  • true: به معنی “صحیح و درست” است.
  • false: به معنی “غلط و اشتباه” است.

نوع بولین در نتایج مقایسه‌ها نیز استفاده می‌شود:

بولین‌ها را در ادامه و تحت عنوان “عملگرهای منطقی” بصورت دقیق‌تر بررسی می‌کنیم.


۴- مقدار “null”

مقدار null متعلق به هیچ یک از انواع متغیرهایی که تا کنون گقته‌ایم، نیست. تنها مقداری که می‌پذیرد همان null است:

در جاوا اسکریپت، null برخلاف برخی زبان‌های دیگر، به معنی “شی غیر موجود” یا “اشاره‌گر خالی” نیست. بلکه یک مقدار خاص است که به معنی “پوچ و خالی” می‌باشد.

بنابراین کد بالا می‌گوید که متغیر age به هر دلیلی “خالی یا ناشناس” است.


۵- مقدار “undefined”

مقدار undefined نیز مانند null یک نوع کاملاً مستقل است و تنها یک مقدار دارد که همان undefined است:

زمانی این مقدار پیش می‌آید که یک متغیر را تعریف کرده ولی مقدار نداده باشیم و یا مستقیماً به آن مقدار undefined داده باشیم.

البته توصیه می‌شود که هیچ وقت مقدار یک متغیر را بصورت مستقیم برابر با undefined قرار ندهید، ما برای نشان دادن یک متغیر “خالی یا ناشناس” از null استفاده می‌کنیم.

کاربرد اصلی مقدار undefined برای زمانی است که می‌خواهم بررسی کنیم که یک متغیر مقداردهی شده است یا خیر.


۶- اشیاء و نمادها (Objects and Symbols)

شیء یا object نوع داده خاصی است.

سایر انواع داده را “داده‌های اولیه” نیز می‌گوییم، زیرا مقدار آن‌ها تنها می‌تواند یک چیز باشد (یک رشته، یک عدد یا هرچیز دیگر). اما اشیاء می‌توانند بیش از یک داده را ذخیره کنند و پیچده‌تر هستند. ما در ادامه و پس از یادگیری عمیق‌تر انواع داده‌های اولیه بصورت کامل به اشیاء خواهیم پرداخت.

نماد یا symbol برای ایجاد شناسه‌های منحصر به فرد برای اشیاء استفاده می‌شود. نمادها را بهتر است پس از خواندن اشیاء بخوانیم.


۷- اپراتور “typeof”

اپراتور typeof نوع پارامترها را مشخص می‌کند. برای زمانی که می‌خواهیم نوع یک پارامتر را چک کنیم و یا برای پردازش مقادیر مختلفِ انواع متفاوت داده کاربرد دارد.

دو نوع نوشتاری دارد:

  1. به عنوان یک اپراتور: typeof x
  2. به عنوان یک تابع: (typeof(x

نتیجه هر دو نوع بالا (چه با پرانتز چه بدون آن) کاملا یکسان است.

خروجی این اپراتور بصورت یک رشته است که نوع پارامتر را مشخص می کند:

شاید سه خط آخر نیاز به توضیح بیشتری داشته باشند:

  1. math بر پایه شی ساخته شده که به ما قابلیت دسترسی به عملگرهای ریاضی را می‌دهد. در ادامه و در مبحث اعداد بیشتر با آن آشنا خواهیم شد.
  2. خروجی typeof null به ما می‌گوید که null یک شیء است! این کاملا غلط می‌باشد، همانطور که گفتیم null خودش یک نوع مستقل است. بنابراین این یک ارور در زبان جاوا اسکریپت است.
  3. خروجی typeof alert به ما می‌گوید که alert یک تابع است، توابع را بعدها بصورت عمیق بررسی می‌کنیم.

در این مطلب با انواع داده‌های جاوا اسکریپت آشنا شدیم و بعضی از آن‌ها را فقط نام برده‌ایم که بعدها بصورت کامل بررسی می‌کنیم.