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

از ویکی‌کد
پرش به ناوبری پرش به جستجو
Main Page Tutorial
JavaScript-menu.png
موارد آموزشی
فرم‌ها در جاوا اسکریپت
اشیاء در جاوا اسکریپت
تابع در جاوا اسکریپت
HTML DOM در جاوا اسکریپت
Browser BOM در جاوا اسکریپت
AJAX در جاوا اسکریپت
JSON در جاوا اسکریپت
جی‌کوئری در برابر جاوا اسکریپت
مرجع جاوا اسکریپت

متد Number() داده را به یک عدد تبدیل می‌کند، متد String() داده را به یک رشته متنی (به انگلیسی: String)، متد Boolean() داده را به یک داده بولین (به انگلیسی: Boolean) تبدیل می‌کند. [۱]

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

در جاوا اسکریپت ما ۵ نوع داده مختلف داریم که می‌توانند شامل مقادیری باشند:

  • string
  • number
  • boolean
  • object
  • function


۶ نوع از اشیاء وجود دارد:

  • Object
  • Date
  • Array
  • String
  • Number
  • Boolean


و ۲ نوع داده نمی‌توانند شامل مقدار باشند:

  • null
  • undefined

عملگر Typeof

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

مثال

 1 typeof "John"                 // Returns "string"
 2 typeof 3.14                   // Returns "number"
 3 typeof NaN                    // Returns "number"
 4 typeof false                  // Returns "boolean"
 5 typeof [1,2,3,4]              // Returns "object"
 6 typeof {name:'John', age:34}  // Returns "object"
 7 typeof new Date()             // Returns "object"
 8 typeof function () {}         // Returns "function"
 9 typeof myCar                  // Returns "undefined" *
10 typeof null                   // Returns "object"


مشاهدهٔ نتیجه


لطفاً به خاطر بسپارید:

  • نوع داده NaN، نوع عددی یا number است
  • نوع داده یک آرایه object یا شیء است
  • نوع داده date یک object یا شیء است
  • نوع داده null یک شیء یا object است
  • نوع دادهٔ یک متغیر تعریف نشده undefined است
  • نوع داده متغیر تعریف شده و مقدار دهی نشده نیز undefined است
شما نمی‌توانید از عملگر typeof برای بررسی اینکه یک شیء یا object یک آرایه یا یک Date است، استفاده کنید.

نوع داده typeof

عملگر typeof Typeof یک متغیر نیست. یک عملگر است. عملگرها (+ - * /) هیچ گونه نوع داده‌ای ندارند.

اما عملگر typeof همیشه یک رشته متنی (که شامل نوع عملگر است) را برمی‌گرداند.

ویژگی سازنده (به انگلیسی: constructor)

ویژگی constructor تابع constroctor را برای تمامی متغیرها در جاوا اسکریپت برمی‌گرداند.

مثال

1 "John".constructor                // Returns function String()  {[native code]}
2 (3.14).constructor                // Returns function Number()  {[native code]}
3 false.constructor                 // Returns function Boolean() {[native code]}
4 [1,2,3,4].constructor             // Returns function Array()   {[native code]}
5 {name:'John',age:34}.constructor  // Returns function Object()  {[native code]}
6 new Date().constructor            // Returns function Date()    {[native code]}
7 function () {}.constructor        // Returns function Function(){[native code]}


مشاهدهٔ نتیجه


شما می‌توانید از ویژگی Constructor برای بررسی اینکه آیا یک شیء یک آرایه نیز هست استفاده کنید. (شامل کلمه Array می‌شود):

مثال

1 function isArray(myArray) {
2   return myArray.constructor.toString().indexOf("Array") > -1;
3 }


مشاهدهٔ نتیجه


و یا حتی ساده‌تر، شما می‌توانید بررسی کنید که آیا یک شیء یک تابع آرایه است:

مثال

1 function isArray(myArray) {
2   return myArray.constructor === Array;
3 }


مشاهدهٔ نتیجه


شما می‌توانید با استفاده از ویژگی constructor برای بررسی اینکه آیا یک شیء از نوع Date است یا نه استفاده کنید (شامل کلمه "Date"):

مثال

1 function isDate(myDate) {
2   return myDate.constructor.toString().indexOf("Date") > -1;
3 }


مشاهدهٔ نتیجه


و یا حتی ساده‌تر، شما می‌توانید بررسی کنید که آیا یک شیء یک تابع تاریخ و زمان یا Date است:

مثال

1 function isDate(myDate) {
2   return myDate.constructor === Date;
3 }


مشاهدهٔ نتیجه


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

متغیرهای جاوا اسکریپت می‌توانند به یک متغیر جدید و با یک نوع داده دیگر تبدیل شوند:

  • با استفاده از یک تابع در جاوا اسکریپت
  • به صورت خودکار توسط خود جاوا اسکریپت

تبدیل اعداد به رشته های متنی (به انگلیسی: String)

تابع global یا کلی String() می‌تواند اعداد را به رشته‌های متنی تبدیل می‌کند.

این تابع را می‌توان بر روی هر نوعی از اعداد، literalها، متغیرها و عبارات به کار برد:

مثال

1 String(x)         // returns a string from a number variable x
2 String(123)       // returns a string from a number literal 123
3 String(100 + 23)  // returns a string from a number from an expression


مشاهدهٔ نتیجه


متد toString() از شیء Number مشابه متد ToString کلی (به انگلیسی: Global) است.

مثال

1 x.toString()
2 (123).toString()
3 (100 + 23).toString()


مشاهدهٔ نتیجه


در فصل متدهای اعداد، شما مطالب بیشتری را در مورد متدهایی که می‌توان برای تبدیل اعداد به رشته‌های متنی استفاده کرد، خواهید آموخت:

توضیحات متد
یک رشته متنی را به همراه یک عدد گرد شده و به صورت عدد علمی برمی‌گرداند. toExponential()
یک رشته متنی را با یک عدد گرد شده و به همراه تعداد به خصوصی از اعشار برمی‌گرداند. toFixed()
یک رشته متنی را با یک عدد و طول به خصوص برمی گرداند. toPrecision()

تبدیل بولین ها به رشته‌های متنی

متد کلی یا String() global, می‌تواند مقادیر بولین را به رشته‌های متنی تبدیل کند.

1 String(false)      // returns "false"
2 String(true)       // returns "true"

متد toString() شیء boolean مانند متد toString() کلی عمل می‌کند.

1 false.toString()   // returns "false"
2 true.toString()    // returns "true"

تبدیل تاریخ و زمان به رشته های متنی

متد کلی یا String() global, می‌تواند تاریخ و زمان را به رشته‌های متنی تبدیل کند.

String(Date())  // returns "Thu Jul 17 2014 15:38:19 GMT+0200 (W. Europe Daylight Time)"

متد toString() شیء Date عمل مشابهی را انجام می‌دهد.

مثال

Date().toString()  // returns "Thu Jul 17 2014 15:38:19 GMT+0200 (W. Europe Daylight Time)"


مشاهدهٔ نتیجه


در فصل متدهای تاریخ و زمان شما مطالب بیشتری را در مورد متدهایی که برای تبدیل تاریخ و زمان به رشته‌های متنی استفاده می‌شود، خواهید آموخت:

متد توضیحات
getDate() شماره روز را به صورت یک عدد دریافت می کند. (۳۱–۱)
getDay() شماره روز هفته را دریافت می‌کند .(۶–۰)
getFullYear() شماره چهاررقمی سال را دریافت می‌کند. (yyyy)
getHours() شماره ساعت را دریافت می‌کند. (۲۳–۰)
getMilliseconds() شماره میلی ثانیه را دریافت می‌کند .(۹۹۹–۰)
getMinutes() شماره دقیقه را دریافت می‌کند .(۵۹–۰)
getMonth() شماره ماه را دریافت می‌کند .(۱۱–۰)
getSeconds() شماره ثانیه را دریافت می‌کند. (۵۹–۰)
getTime() زمان را به صورت میلی ثانیه (از یک ژانویه ۱۹۷۰) دریافت می‌کند.

تبدیل رشته های متنی به اعداد

متد کلی یا global Number() , می‌تواند رشته‌های متنی را به اعداد تبدیل کند.

رشته‌های متنی ای که شامل اعداد هستند (مانند "۳٫۱۴") به اعداد تبدیل می‌شوند (همانند ۳٫۱۴).

رشته‌های متنی خالی به صفر تبدیل می‌شوند.

هر چیز دیگری به NaN (یک عدد نیست) تبدیل می‌شود.

1 Number("3.14")    // returns 3.14
2 Number(" ")       // returns 0
3 Number("")        // returns 0
4 Number("99 88")   // returns NaN

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

متد توضیحات
parseFloat() یک رشته متنی دارای عدد را به یک عدد اعشاری تبدیل می‌کند
parseInt() یک رشته متنی دارای عدد را به یک عدد صحیح تبدیل می‌کند.

عملگر + می‌تواند برای تبدیل رشته‌های متنی به اعداد استفاده شود:

مثال

1 var y = "5";      // y is a string
2 var x = + y;      // x is a number


مشاهدهٔ نتیجه


اگر یک متغیر تبدیل نشود، آن متغیر از نوع عددی باقی خواهد ماند اما مقدار آن برابر با NaN یا یک عدد نیست خواهد بود:

مثال

1 var y = "John";   // y is a string
2 var x = + y;      // x is a number (NaN)


مشاهدهٔ نتیجه


تبدیل مقادیر بولین به اعداد

متد کلی یا global Number(), می‌تواند برای تبدیل بولین‌ها به اعداد استفاده شوند.

1 Number(false)     // returns 0
2 Number(true)      // returns 1

تبدیل تاریخ و زمان به اعداد

از متد کلی یا global Number()، می‌توان برای تبدیل تاریخ و زمان به عدد استفاده کرد.

1 d = new Date();
2 Number(d)          // returns 1404568027739

متد getTime() از شیء Date کار یکسانی را انجام می‌دهد.

1 d = new Date();
2 d.getTime()        // returns 1404568027739

تبدیل نوع خودکار در جاوا اسکریپت

زمانی که جاوا اسکریپت سعی می‌کند یک عملیات را روی نوع داده اشتباه انجام دهد، جاوا اسکریپت سعی خواهد کرد که نوع آن را به نوع داده درست تبدیل کند.

نتیجه همیشه آن چیزی نیست که شما انتظار دارید:

1 5 + null    // returns 5         because null is converted to 0
2 "5" + null  // returns "5null"   because null is converted to "null"
3 "5" + 2     // returns "52"      because 2 is converted to "2"
4 "5" - 2     // returns 3         because "5" is converted to 5
5 "5" * "2"   // returns 10        because "5" and "2" are converted to 5 and 2

تبدیل خودکار رشته های متنی

جاوا اسکریپت زمانی که شما سعی می‌کنید یک متغیر یا یک شیء را به عنوان خروجی نمایش هید به طور خودکار متد toString() آن متغیر یا شیء را فراخوانی می‌کند:

1 // if myVar = {name:"Fjohn"}  // toString converts to "[object Object]"
2 // if myVar = [1,2,3,4]       // toString converts to "1,2,3,4"
3 // if myVar = new Date()      // toString converts to "Fri Jul 18 2014 09:08:55 GMT+0200"

اعداد و بولین‌ها نیز تبدیل می‌شوند، اما این امر چندان به چشم نمی‌آید:

1 // if myVar = 123             // toString converts to "123"
2 // if myVar = true            // toString converts to "true"
3 // if myVar = false           // toString converts to "false"

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

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

مقدار اصلی تبدیل شده به عدد تبدیل شده به رشته متنی تبدیل شده به بولین مشاهدهٔ نتیجه
false 0 "false" false مشاهدهٔ نتیجه
true 1 "true" true مشاهدهٔ نتیجه
0 0 "0" false مشاهدهٔ نتیجه
1 1 "1" true مشاهدهٔ نتیجه
"0" 0 "0" true مشاهدهٔ نتیجه
"000" 0 "000" true مشاهدهٔ نتیجه
"1" 1 "1" true مشاهدهٔ نتیجه
NaN NaN "NaN" false مشاهدهٔ نتیجه
Infinity Infinity "Infinity" true مشاهدهٔ نتیجه
-Infinity -Infinity "-Infinity" true مشاهدهٔ نتیجه
"" 0 "" false مشاهدهٔ نتیجه
"20" 20 "20" true مشاهدهٔ نتیجه
"twenty" NaN "twenty" true مشاهدهٔ نتیجه
[ ] 0 "" true مشاهدهٔ نتیجه
[20] 20 "20" true مشاهدهٔ نتیجه
[۱۰٬۲۰] NaN "10,20" true مشاهدهٔ نتیجه
["twenty"] NaN "twenty" true مشاهدهٔ نتیجه
["ten","twenty"] NaN "ten,twenty" true مشاهدهٔ نتیجه
function(){} NaN "function(){}" true مشاهدهٔ نتیجه
{ } NaN "[object Object]" true مشاهدهٔ نتیجه
Null 0 "null" false مشاهدهٔ نتیجه
Undefined NaN "undefined" false مشاهدهٔ نتیجه

مقادیری که درون " " قرار گرفته‌اند مقادیر رشته‌ای هستند.

مقادیر قرمز رنگ، مقادیر هستند که ممکن است (برخی) از برنامه نویسان انتظار آن را نداشته باشند.


منابع آموزشی