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

از ویکی کد
پرش به ناوبری پرش به جستجو
دورهٔ آموزشی جاوااسکریپت
Javascript.jpg
جاوااسکریپت
موارد آموزشی
۱آموزش جاوااسکریپت
۲مقدمه‌ای بر جاوااسکریپت
۳قوانین و اصول اولیه زبان جاوااسکریپت
۴خروجی جاوااسکریپت
۵عبارت‌ها در جاوااسکریپت
۶شیوهٔ نوشتن دستورات در جاوااسکریپت
۷نظرات یا کامنت‌ها (Comments) در جاوااسکریپت
۸متغیرها در جاوااسکریپت
۹عملگرهای جاوااسکریپت
۱۰عملگرهای ریاضی در جاوااسکریپت
۱۱عملگرهای مقداردهی در جاوااسکریپت
۱۲انواع داده‌ها در جاوااسکریپت
۱۳توابع در جاوااسکریپت
۱۴اشیاء (object) در جاوااسکریپت
۱۵رویدادها در جاوااسکریپت
۱۶رشته‌های متنی (string) در جاوااسکریپت
۱۷متدهای نوع داده متنی یا رشته‌ای در جاوااسکریپت
۱۸اعداد در جاوااسکریپت
۱۹متدهای داده‌های عددی در جاوااسکریپت
۲۰آرایه‌ها در جاوااسکریپت
۲۱متدهای آرایه در جاوااسکریپت
۲۲مرتب‌سازی آرایه‌ها در جاوااسکریپت
۲۳متدهای پیمایش آرایه در جاوااسکریپت
۲۴اشیاء تاریخ و زمان در جاوااسکریپت
۲۵فرمت‌های تاریخ و زمان در جاوااسکریپت
۲۶متدهای دریافت تاریخ و زمان در جاوااسکریپت
۲۷متدهای تنظیم زمان و تاریخ در جاوااسکریپت
۲۸شی ریاضی (Math) در جاوااسکریپت
۲۹ایجاد عدد تصادفی در جاوااسکریپت
۳۰مقادیر بولین (Booleans) در جاوااسکریپت
۳۱عملگرهای منطقی و مقایسه‌ای در جاوااسکریپت
۳۲ساختار if else و else if در جاوااسکریپت
۳۳تکه کد Switch در جاوا اسکریپت
۳۴حلقه For در جاوااسکریپت
۳۵حلقه While در جاوااسکریپت
۳۶کلمات کلیدی Break و Continue در جاوااسکریپت
۳۷تبدیل نوع داده‌ها در جاوااسکریپت
۳۸عملیات‌های بیتی در جاوااسکریپت
۳۹عبارات با قاعده در جاوااسکریپت
۴۰خطاها در جاوااسکریپت - رخ دادن خطا و رفع آن
۴۱Scope در جاوااسکریپت
۴۲Hoisting یا جا به جایی کدها در جاوااسکریپت
۴۳استفاده از مد یا حالت سخت‌گیرانه (use strict) در جاوااسکریپت
۴۴کلمه کلیدی This در جاوااسکریپت
۴۵کلمه کلیدی Let در جاوااسکریپت
۴۶ثابت‌ها در جاوااسکریپت
۴۷تعریف توابع به صورت پیکان
۴۸کلاس‌ها در جاوااسکریپت
۴۹اشکال‌زدایی در جاوااسکریپت
۵۰راهنمای استایل و استانداردهای کدنویسی در جاوااسکریپت
۵۱بهترین تمرینات جاوااسکریپت
۵۲اشتباهات رایج در برنامه‌نویسی جاوااسکریپت
۵۳کارایی در جاوااسکریپت
۵۴کلمات رزرو شده در جاوااسکریپت
۵۵ورژن‌های جاوااسکریپت
۵۶ECMAScript 5 - JavaScript 5
۵۷ECMAScript 6 - ECMAScript 2015
۵۸جیسون (JSON) در جاوااسکریپت
فرم‌ها
۱فرم‌ها در جاوااسکریپت
۲API ارزشیابی در جاوااسکریپت
اشیاء (Object)
۱اشیاء در جاوااسکریپت
۲ویژگی‌های اشیاء در جاوااسکریپت
۳متدهای اشیاء در جاوااسکریپت
۴روش‌های دسترسی به شیء در جاوااسکریپت
۵سازنده‌های شیء در جاوااسکریپت
۶شکل اصلی شیء در جاوااسکریپت
۷متدهای شیء در ورژن ES5 جاوااسکریپت
تابع
۱تعریف تابع در جاوااسکریپت
۲پارامتر توابع در جاوااسکریپت
۳فراخوانی تابع در جاوااسکریپت
۴صدا کردن تابع در جاوااسکریپت
۵تابع Apply در جاوااسکریپت
۶بسته‌ها (به انگلیسی: Closures) در جاوااسکریپت
HTML DOM
۱HTML DOM در جاوااسکریپت
۲متدهای HTML DOM در جاوااسکریپت
۳HTML DOM Document در جاوااسکریپت
۴عناصر HTML DOM در جاوااسکریپت
۵reeeeeeeeeeeeeeee
۶تست
۷تست
۸تست
۹تست
۱۰تست
۱۱تست
۱۲تست
۱۳تست


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

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

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

  • ​string​
  • ​number​
  • ​boolean​
  • ​object​
  • ​function​

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

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

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

  • ​null​
  • ​undefined​

عملگر Typeof

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

مثال

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

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

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


نوع داده typeof

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

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

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

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

مثال

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

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

مثال

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

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

مثال

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

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

مثال

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

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

مثال

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

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

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

با استفاده از یک تابع در جاوااسکریپت

به صورت خودکار توسط خود جاوااسکریپت

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

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

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

مثال

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

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

مثال

x.toString()
(123).toString()
(100 + 23).toString()

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

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

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

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

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

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

false.toString()   // returns "false"
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​(یک عدد نیست) تبدیل می‌شود.

Number("3.14")    // returns 3.14
Number(" ")       // returns 0
Number("")        // returns 0
Number("99 88")   // returns NaN

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

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

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

مثال

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

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

مثال

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

// if myVar = 123             // toString converts to "123"
// if myVar = true            // toString converts to "true"
// if myVar = false           // toString converts to "false"

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

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

مقدار اصلی تبدیل شده به عدد تبدیل شده به رشته متنی تبدیل شده به بولین Try it
False ۰ "false" False
True ۱ "true" True
۰ ۰ "۰" False
۱ ۱ "۱" True
"۰" ۰ "۰" True
"۰۰۰" ۰ "۰۰۰" True
"۱" ۱ "۱" True
NaN NaN "NaN" False
Infinity Infinity "Infinity" True
-Infinity -Infinity "-Infinity" True
"" ۰ "" False
"۲۰" ۲۰ "۲۰" True
"twenty" NaN "twenty" True
[ ] ۰ "" true
[۲۰] ۲۰ "۲۰" true
[۱۰٬۲۰] NaN "۱۰٬۲۰" True
["twenty"] NaN "twenty" True
["ten","twenty"] NaN "ten,twenty" True
function(){} NaN "function(){}" True
{ } NaN "[object Object]" True
Null ۰ "null" False
Undefined NaN "undefined" false

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

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

منابع آموزشی