JavaScript Data Types

اهمیت شناخت انواع داده

متغیرهای جاوا اسکریپت می‌توانند که انواع داده را در خود ذخیره کنند: داده‌های عددی (numbers)، رشته‌ای (strings)، شی (object) و ...

var length = 16; // Number
var lastName = "Johnson"; // String
var x = {firstName:"John", lastName:"Doe"}; // Object

در مبحث برنامه‌نویسی مفهوم نوع داده بسیار مهم است. برای اینکه قادر باشیم که روی متغیرها عملیاتی انجام دهیم، مهم است که در مورد نوع آن‌ها اطلاعاتی داشته باشیم. برای نمونه اگر مفهوم نوع داده وجود نداشته باشد کامپیوتر نمی‌تواند کد زیر را حل کند:

var x = 16 + "Volvo";

آیا جمع کردن عدد 16 با عبارت "Volvo" معنی می‌دهد؟ آیا این عبارت منجر به خطا می‌شود و یا نتیجه‌ای را تولید خواهد کرد؟

با توجه به مفهوم نوع داده، جاوا اسکریپت عبارت بالا را به صورت زیر تفسیر می‌کند:

var x = "16" + "Volvo";

یعنی زمانیکه عددی را با یک داده رشته‌ای جمع کنید، جاوا اسکریپت عدد را به صورت رشته تفسیر می‌کند. نتیجه عبارت فوق به صورت "16Volvo" خواهد بود.

جاوا اسکریپت دستورات داده شده را از چپ به راست اجرا می‌کند. بنابراین اگر کد بالا را به صورت زیر بنویسیم:

var x = "Volvo" + "16";
حاصل آن برابر خواهد شد با "Volvo16". بنابراین ترتیب‌های متفاوت نتایج متفاوتی را رقم خواهند زد. به مثال دیگری توجه کنید:
var x = 16 + 4 + "Volvo";

نتیجه عبارت فوق برابر "20Volvo" است. زیرا همان طور که گفته شد ترتیب خواندن عملیات توسط جاوا اسکریپت از چپ به راست است. بنابراین 2 داده اول که عدد هستند با هم جمع می‌شوند ولی حاصل آن‌ها یعنی 20 باید با یک داده رشته‌ای جمع شود و در نتیجه به آن می‌چسپد و حاصل برابر "20Volvo" خواهد شد. حال به نظر شما حاصل عبارت زیر چیست؟

var x = "Volvo" + 16 + 4;

اگر حاصل را "Volvo164" حدس زده‌اید، تشخیص شما کاملاً درست است. در غیر این صورت یک بار دیگر نکات گفته شده را مرور کنید.

نوع متغیرها در جاوا اسکریپت پویا (dynamic) است

پویا بودن نوع متغیر به این معنی است که بعد از تعریف متغیر و نسبت دادن مقدار به آن، می‌توان مقداری دیگر از نوع داده‌ای متفاوت را به همان متغیر نسبت داد.

var x; // Now x is undefined
x = 5; // Now x is a Number
x = "John"; // Now x is a String

متغیرهای رشته‌ای

داده‌های رشته‌ای شامل یک سری از کاراکترها مانند "John Doe" هستند. داده‌های رشته‌ای را باید داخل علامت نقل قول نوشت. در جاوا اسکریپت می‌توانید داده رشته‌ای را داخل علامت نقل قول دوگانه (" ") و یا ساده بنویسید (' ').

var carName1 = "Volvo XC60"; // Using double quotes
var carName2 = 'Volvo XC60'; // Using single quotes

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

var answer1 = "It's alright"; // Single quote inside double quotes
var answer2 = "He is called 'Johnny'"; // Single quotes inside double quotes
var answer3 = 'He is called "Johnny"'; // Double quotes inside single quotes

در ادامه با متغیرهای رشته‌ای بیشتر آشنا خواهید شد.

داده‌های boolean

boolean به داده‌ای گفته می‌شود که یکی از دو مقدار true یا false را می‌تواند داشته باشد.


<!DOCTYPE HTML>
<html>
  <body>
    <h2> JavaScript Booleans </h2>
    <p> Booleans can have two values: true or false: </p>
    <p id = "demo"> </p>
    <script>
      var x = 5;
      var y = 5;
      var z = 6;
      document.getElementById("demo").innerHTML =
        (x == y) + "<br />" + (x == z);
    </script>
  </body>
</html>

خروجی:

چنان که مشاهده می‌کنید، در حالت اول که مقدار x و y با هم برابر است مقدار true و در حالت بعدی که مقدار x و z با هم برابر نیست مقدار false برگشت داده شده است.

معمولاً از بولین در شرط‌ها استفاده می‌شود که بعداً در این مورد بیشتر بحث خواهد شد.

آرایه‌ها در جاوا اسکریپت

آرایه‌ها در جاوا اسکریپت توسط کروشه [] نوشته می‌شوند. هر آرایه شامل تعدادی آیتم است که هر آیتم با علامت کاما از دیگری جدا می‌شود. در مثال زیر آرایه‌ای به اسم car که دارای 3 آیتم است ایجاد می‌شود:

var cars = ["Saab", "Volvo", "BMW"];

شماره گذاری آیتم‌ها در آرایه از صفر شروع می‌شود. به این معنی که آیتم اول [0] آیتم دوم [1] است و الی آخر.

در مبحث آرایه‌ها در مورد کار کردن با آرایه‌ها توضیحات کامل ارائه شده است.

اشیا در جاوا اسکریپت

در جاوا اسکریپت برای ایجاد شی یا همان object از آکولاد {} استفاده می‌کنیم.

خصوصیت شی را به صورت جفت‌های اسم:مقدار (name:value pair) که توسط علامت کاما از هم جدا شده‌اند می‌نویسند.

var person = {firstName:"John", lastName:"Doe", age:50, eyeColor:"blue"};

در کد بالا یک شی با اسم person ساخته شده که دارای 4 خصوصیت firstName, lastName, age, eyeColor است.

در مورد objects در ادامه بیشتر خواهید آموخت.

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

اگر در جاوا اسکریپت متغیری را ایجاد کنیم ولی به آن مقداری نسبت ندهیم، مقدار آن به صورت undefined است. نوع آن نیز به صورت undefined خواهد بود.

var car; // Value is undefined, type is undefined

متغیر دارای مقدار خالی (empty value) هیچ ارتباطی با مقدار undefined ندارد. یک متغیر با مقدار خالی هم دارای مقدار و هم دارای نوع مشخص است. به مثال زیر توجه کنید:

var car = ""; // The value is "", the typeof is "string"

با استفاده از کلید واژه null می‌توانید مقدار یک شی را خالی کنید:

var person = {firstName:"John", lastName:"Doe", age:50, eyeColor:"blue"};
person = null; // Now value is null, but type is still an object

اگر در کد بالا به جای null از کلید واژه undefined استفاده کنیم، آنگاه هم مقدار و هم نوع به undefined تغییر پیدا می‌کنند.