تبدیل انواع داده

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

  • ()praseInt
  • ()parseFloat

این متدها فقط بر روي رشته‌های حاوی عدد کار می‌کنند و بر روي بقیه انواع مقدار NaN را بر می‌گردانند. متد ()praseInt از اولین کاراکتر رشته شروع می‌کند اگر عدد بود آن را بر می‌گرداند در غیر این صورت مقدار NaN را بر می‌گردانند. این روند تا آخرین کاراکتر ادامه پیدا می‌کند تا اینکه به کاراکتري غیر عددي برسد. به مثال زیر توجه کنید:

console.log(parseInt("25Number"));
25

متد ()parseFloat نیز همانند ()parseInt عمل کرده و از اولین کاراکتر شروع به جستجو می‌کند. البته در این متد اولین کاراکتر نقطه حساب نمی‌شود و آن را به همان صورت می‌گرداند. به مثال زیر توجه کنید:

console.log(parseFloat("25.5Number"));
console.log(parseFloat("25.45.2Number"));
25.5
25.45

در جاوااسکریپت امکان استفاده از روشی موسوم به Type Casting براي تبدیل انواع وجود دارد. سه متد برای Type Casting وجود دارد:

  • ()Boolean
  • ()Number
  • ()String

متد ()Boolean زمانی مقدار true را بر می‌گرداند که پارامتر دریافتی‌اش، رشته‌ای شامل حداقل یک کارکتر، یک عدد غیر از صفر و یا یک شیء باشد. مقدار false را نیز زمانی بر می‌گرداند که پارامتر دریافتی‌اش رشته‌ای تهی، عدد صفر یا یکی مقادیر null و undefined باشد:

var b1 = Boolean("");				
var b2 = Boolean("String"); 			
var b3 = Boolean(100); 				
var b4 = Boolean(null); 			
var b5 = Boolean(0); 				
var b6 = Boolean(new Object()); 	

console.log(b1);
console.log(b2);
console.log(b3);
console.log(b4);
console.log(b5);
console.log(b6);
false
true
true
false
false
true

متد ()Number کاری شبیه به متدهای ()parseInt و ()parseFloat انجام می‌دهد ولی تفاوت‌هایی هم با این دو متد دارد. اگر به یاد داشته باشید متدهاي ()parseInt و ()parseFloat آرگومان دریافتی را فقط تا اولین کاراکتر بی ارزش بر می‌گرداندند. مثلاً رشته “25.5.2Number” را به ترتیب به 25 و 25.5 تبدیل خواهند کرد. اما متد ()Number مقدار NaN را می‌گرداند. زیرا این رشته از نظر متد ()Number امکان تبدیل به یک عدد را ندارد. اگر رشته‌ای امکان تبدیل به یک عدد را داشته باشد متد ()Number، خود براي استفاده از یکی از توابع ()parseInt و ()parseFloat تصمیم می‌گیرد. مثال زیر حاصل اجراي تابع ()Number براي انواع داده‌ها را نشان می‌دهد:

console.log(Number(false));
console.log(Number(true));
console.log(Number(undefined));
console.log(Number(null));
console.log(Number("5.5"));
console.log(Number("56"));
console.log(Number("5.6.7"));
console.log(Number(new Object()));
console.log(Number(100));
0
1
NaN
0
5.5
56
NaN
NaN
100

ساده‌ترین متد هم ()String است که همان چیزي را که می‌گیرد به عنوان رشته بر می‌گرداند:

console.log(String(null));
null

در جاوااسکریپت یک متد به نام ()typeof وجود دارد که از آن برای تشخیص نوع متغیر استفاده می‌شود. به مثال زیر توجه کنید :

var value1 = 10.0;
var value2 = "Hello World!";

console.log(typeof(value1));
console.log(typeof(value2));
number
string