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

زبان جاوا اسکریپت دارای انواع داده ای مختلفی است که از آنها میتوان استفاده نمود. برای نمونه میتوان از داده نوع رشته برای ذخیره نام یک محصول استفاده کرد. در این فصل با داده نوع های مختلف موجود در زبان جاوا اسکریپت آشنا خواهیم شد.


داده نوع ها

یک متغیر در جاوا اسکریپت می‌تواند شامل هر داده ای باشد. یک متغیر می تواند در یک لحظه حاوی یک رشته باشد و بعدا یک مقدار عددی بگیرد. عبارت زیر بدون هیچ خطایی اجرا می‌شود :

// no error
let message = "hello";
message = 123456;

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

در زبان جاوا اسکریپت ۶ داده نوع پایه وجود دارد. در این فصل به بررسی این داده‌ نوع ها پرداخته و در فصل‌های بعدی درباره هر کدام به طور مفصل صحبت خواهیم کرد.


نوع عددی (number)

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

یک سری عملیات برای اعداد وجود دارد برای مثال ضرب * ، تقسیم / ، تفریق - ، جمع + و ...

در کنار اعداد معمولی مقادیر عددی خاصی هم وجود دارد که متعلق به نوع عددی هستند :  Infinity ، Infinity- و NaN

Infinity بیانگر مقدار بی نهایت (∞) در ریاضی است. این مقداری است که بزرگتر از هر عددی می باشد. می توان با تقسیم عددی بر صفر به مقدار بی نهایت دست یافت:

alert( 1 / 0 ); // Infinity

میتوان مقدار بی نهایت را به صورت زیر صریحا در اسکریپت خود استفاده کنیم : 

alert( Infinity ); // Infinity

NaN بیانگر یک خطای محاسباتی است و  نتیجه یک عملیات ریاضی تعریف نشده و یا ناصحیح است. برای مثال :

alert( "not a number" / 2 ); // NaN, such division is erroneous

هر عملیاتی که بر روی مقدار NaN انجام شود خود مقدار NaN را تولید خواهد کرد :

alert( "not a number" / 2 + 5 ); // NaN

بنابراین اگر مقدار NaN در هر جایی از یک عبارت ریاضی باشد، نتیجه NaN خواهد شد.


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

مقادیر عددی خاصی که در بالا ذکر شدند متعلق به نوع عددی هستند اما آنها عملا عدد نیستند.


نوع رشته  - string

رشته ها در جاوا اسکریپت باید در داخل کوتیشن ها قرار بگیرند :

let str = "Hello";
let str2 = 'Single quotes are ok too';
let phrase = `can embed ${str}`;

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

  1. دابل کوتیشن :"Hello"
  2. سینگل کوتیشن : 'Hello'
  3. بک تیک ها : `Hello`

مورد اول و دوم کوتیشن های ساده هستند و  تفاوتی بین آنها در جاوا اسکریپت وجود ندارد. اما مورد سوم یعنی بک تیک ها دارای قابلیت های گسترده تری هستند. بک تیک ها به ما اجازه می‌دهند که متغیرها و یا عبارات را در داخل یک رشته با استفاده از دستور {…}$ بگنجانیم. برای مثال :

let name = "John";

// embed a variable
alert( `Hello, ${name}!` ); // Hello, John!

// embed an expression
alert( `the result is ${1 + 2}` ); // the result is 3

خروجی نمونه مثال فوق در جلوی هر عبارت به صورت کامنت مشخص شده است. در مثال بالا عبارت داخل دستور {…}$ ارزیابی می‌شود و نتیجه آن در رشته قرار میگیرد. میتوان هر چیزی را اینجا قرار داد. برای مثال یک متغیر مانند name یا یک عبارت ریاضی شبیه 1 + 2 و یا چیزی پیچیده‌تر.

دقت داشته باشید که ارزیابی فقط در بک تیک ها انجام میشود و دیگر کوتیشن ها اجازه چنین ارزیابی را نمی دهند :

alert( "the result is ${1 + 2}" ); // the result is ${1 + 2} (double quotes do nothing)

در زبان جاوا اسکریپت داده نوع کاراکتری (character) وجود ندارد. در بعضی از زبان ها داده نوع خاصی برای کاراکتر ها به نام char وجود دارد برای مثال در زبان c و java داده نوع char برای ذخیره نوع های کاراکتری استفاده میشود. در جاوا اسکریپت چنین نوعی وجود ندارد. تنها یک نوع وجود دارد و آن هم string است. یک رشته می‌تواند شامل یک کاراکتر و یا تعدادی از آنها باشد.


نوع منطقی - boolean

داده نوع بولین شامل دو مقدار است :  true و false. این داده نوع به صورت گسترده برای ذخیره مقادیر بله و خیر استفاده می شود.true به معنای بله و صحیح و false به معنای خیر و ناصحیح است. برای مثال :

let nameFieldChecked = true; // yes, name field is checked
let ageFieldChecked = false; // no, age field is not checked

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

let isGreater = 4 > 1;

alert( isGreater ); // true (the comparison result is "yes")

مقدار null 

مقدار خاص null به هیچ کدام از داده نوع های شرح داده شده در بالا تعلق ندارد و نوع مختص به خود را دارد که شامل تنها مقدار null است : 

let age = null;

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


مقدار undefined

مقدار خاص undefined مختص نوع خود است و به هیچ کدام از داده نوع های ذکر شده در بالا تعلق ندارد. معنای undefined این است که مقداری تخصیص داده نشده است. اگر متغیری تعریف شود و مقدار دهی اولیه نشود آنگاه مقدار آن برابر با undefined خواهد بود :

let x;

alert(x); // shows "undefined"

از نظر تکنیکی می‌توان مقدار undefined را به هر متغیری نسبت داد :

let x = 123;

x = undefined;

alert(x); // "undefined"

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


نوع های object 

نوع  object یک نوع خاص است. تمام دیگر نوع ها نوع های اولیه نامیده می‌شوند و این به خاطر این است که آنها تنها می‌تواند یک چیز را در خود داشته باشند. برای مثال رشته یا عدد و یا چیزهای دیگر. در مقابل object ها برای ذخیره مجموعه‌هایی از داده و موجودیت های پیچیده تر استفاده می شود در فصول آینده مفصل به این داده نوع ها خواهیم پرداخت.


نوع symbol

نوع  symbol برای ساخت یک شناسه منحصر به فرد برای اشیا (object) استفاده میشود بعد از بررسی object ها به این نوع هم در آینده خواهیم پرداخت.


عملگر typeof

عملگر typeof نوع آرگومان خود را بر می گرداند این عملگر برای چک کردن نوع متغیر ها استفاده میشود. به دو صورت می‌توان از عملگر typeof استفاده کرد :

  • به‌عنوان یک عملگر : typeof x
  • به عنوان یک تابع :(typeof(x

به عبارتی دیگر از این عملگر با و یا بدون پرانتز می‌توان استفاده کرد. نتیجه یکسان خواهد بود. فراخوانی typeof رشته را بر می گرداند که نام نوع در داخل آن قرار دارد :

typeof undefined // "undefined"

typeof 0 // "number"

typeof true // "boolean"

typeof "foo" // "string"

typeof Symbol("id") // "symbol"

typeof Math // "object"  (1)

typeof null // "object"  (2)

typeof alert // "function"  (3)

در نمونه مثال بالا سه خط  آخر نیاز به توضیح اضافه دارد :

  • Math یک شی درونی در جاوا اسکریپت است که شامل عملیات های ریاضی است.
  • همانطور که قبلا گفته شد null مقداری است مختص نوع خود و این یک خطا در زبان جاوا اسکریپت است که در اینجا نوع آن را object نشان میدهد
  • نتیجه عبارت typeof alert برابر با "function" است. زیرا که alert یک تابع بوده که مقدار پارامتر خود را در پنجره ای به کاربر نشان می دهد. 
     
منتشر شده در ۱۳ اردیبهشت ۱۳۹۷ حمید رضا ملکی ۲۳۵۵ بازدید
دیدگاه ها
سعید یکشنبه ۲۸ مرداد ۱۳۹۷

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

حمید رضا ملکی سه شنبه ۳۰ مرداد ۱۳۹۷

ممنون. بله این قسمت را هم جداگانه اضافه خواهیم کرد

برای ارسال دیدگاه لازم است ابتدا وارد سایت شوید