بحث امروز ما توابع تبدیل نوع در جاوا اسکریپت میباشد. که ممکن برای شما هم پیش امده باشدکه بخواهید متغیر ها یز نوع های مختلف را بهم نسبت بدید.Number() به عدد تبدیل می شود، String() به رشته تبدیل می گردد و Boolean() نیز به یک بولی (Boolean) تبدیل می شود.

نوع داده های جاوا اسکریپت (Data types)

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

String

number

boolean

object

function

این زبان همچنین سه نوع مختلف شی ارائه می دهد.

Object

Date

Array

و دو نوع داده (data type) که قادر به ذخیره و نگه داری مقدار در خود نیستند.

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 (if myCar is not declared)
typeof null

به نکات زیر توجه داشته باشید.

نوع داده ی متغیر NaN یک عدد است.

نوع داده ی یک آرایه شی است.

نوع داده ی date شی است.

نوع داده ی null نیز شی است.

نوع داده ی یک متغیر (undefined) تعریف نشده، undefined می باشد.

نمی توانید از عملگر نام برده برای کشف اینکه آیا یک JavaScript object آرایه است یا خیر استفاده کنید.

typeof یک متغیر نیست بلکه یک عملگر محسوب می شود. عملگرها (* – + /) نمی توانند نوع داده داشته باشند.

اما لازم است توجه داشته باشید که این عملگر همیشه یک رشته برمی گرداند که دربردانده ی نوع عملوند (operand) می باشد.

خاصیت (property) Constructor

این خاصیت ارجاعی به Object function که prototype نمونه ی مورد نظر را ایجاد کرده برمی گرداند.

مثال


نمونه دو
?
۱
۲
۳
۴
۵
۶
۷

“John”.constructor // Returns function String() { [native code] }
(۳٫۱۴).constructor // Returns function Number() { [native code] }
false.constructor // Returns function Boolean() { [native code] }
[۱,۲,۳,۴].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] }

همچنین می توان با بررسی property ذکر شده دریافت آیا یک شی، Array هست یا خیر (دربردانده ی کلمه ی ” Array “).

نمونه سه
?
۱
۲
۳

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

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

در جاوا اسکریپت می توان متغیر را به یک متغیر جدید یا نوع داده ی دیگر تبدیل کرد. این کار توسط یک function (تابع( جاوا اسکریپت و یا به صورت خودکار توسط خود جاوا اسکریپت امکان پذیر می باشد.

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

متد سراسری 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() نیز همین کار را انجام می دهند.

مثال

نمونه پنج
?
۱
۲
۳

x.toString()
(۱۲۳).toString()
(۱۰۰ + ۲۳).toString()

جدول زیر فهرست مختصری از توابعی که اعداد را به رشته تبدیل می کنند، ارائه داده است.

تابع

شرح

toExponential()

Returns a string, with a number rounded and written using exponential notation.

یک رشته دربردانده ی عدد گرد شده که با نشانه گذاری نمایی (به صورت توان) نوشته شده باشد برمی گرداند.

toFixed()

Returns a string, with a number rounded and written with a specified number of decimals.

یک رشته دربردانده ی عدد گرد و نوشته شده با نشانه گذاری نمایی که تعداد مشخصی اعشار داشته باشد بازیابی می کند.

toPrecision()

Returns a string, with a number written with a specified length

یک رشته دربردارنده ی عدد که دارای طول مشخصی (تعداد معینی عدد) باشد بازگردانی می کند.

تبدیل بولی به رشته

متد سراسری String() می تواند بولی ها (متغیرهای Boolean) را به رشته تبدیل کند.

String(false) // returns “false”

String(true) // returns “true”‎‏ ‏

عکس این قضیه نیز صحیح می باشد (متد بولی toString () نیز همین کار را انجام می دهد).

false.toString() // returns “false”

true.toString() // returns “true”‎

تبدیل تاریخ به رشته

متد سراسری string () قابلیت تبدیل تاریخ (date) به رشته را دارا می باشد.

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

نیز همین کار را انجام می دهد. toString() ،Date method

مثال

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

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

متد

شرح

getDate()

شماره ی روز ماه را باز می گرداند (۱-۳۱).

getDay()

.(۰-۶) شماره ی روز هفته را بر می گرداند

getFullYear()

شماره ی سال را به صورت کامل (چهار رقمی) بازیابی می کند.

getHours()

مقدار ساعت را برمی گرداند.(۰-۲۳)

getMilliseconds()

تعداد یا شماره ی ملی ثانیه ها را برمی گرداند (۰-۹۹۹).

getMinutes()

این متد شماره دقیقه را در یک متغیر زمانی بر می گرادند..

getMonth()

این متد ، شماره ماه جاری را بر می گرداند..

getSeconds()

این متد شماره ثانیه ها را در یک متغیر زمانی بر می گرادند..

getTime()

این متد تعداد ثانیه های سپری شده از تاریخ یک ژانویه سال ۱۹۷۰ تا به تاریخ جاری را بازگردانی می نماید.

تبدیل رشته به عدد

متد سراسری Number() قابلیت و توانایی تبدیل رشته به اعداد را دارا می باشد.

رشته هایی که دربردارنده ی اعدادی مانند “۳٫۱۴” می باشند به عدد ۳٫۱۴ تبدیل می شوند.

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

هر چیز دیگری به جز دو مورد ذکر شده به NaN (Not a Number) تبدیل می شود.

Number(“3.14”) // returns 3.14

Number(” “) // returns 0

Number(“”) // returns 0

Number(“99 88”) // returns NaN‎

توابع زیر رشته را به اعداد تبدیل می کنند.

متد

توضیح

parseFloat()

این متد یک رشته را parse (تجزیه) کرده و یک عدد با ممیز شناور بازمی گرداند.

parseInt()

یک رشته را parse (تجزیه) کرده، سپس یک integer (عدد صحیح) برمی گرداند.

عملگر یگانی + (unary operator)

به وسیله ی این عملگر می توان یک متغیر را به عدد تبدیل کرد.

نمونه شش
?
۱
۲

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

چنانچه امکان تبدیل متغیر وجود نداشته باشد مانند رشته ” John “، متغیر ذکر شده پس از تبدیل یک عدد محسوب می شود اما مقدار NaN به آن تخصیص می یابد.

نمونه هفت
?
۱
۲

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

تبدیل متغیرهای بولی به عددی

تابع سراسری Number() نیز قادر است متغیرهای بولی را به نوع عددی تبدیل کند.

Number(false) // returns 0

Number(true) // returns 1‎

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

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

d = new Date();

Number(d) // returns 1404568027739‎

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

d = new Date();

d.getTime() // returns 1404568027739‎

تبدیل نوع (type conversion) خودکار

هنگامی که JavaScript سعی بر اجرای عملیات بر روی یک نوع داده ی ” غلط ” می کند، ابتدا سعی می کند مقدار آن را به نوع صحیح تبدیل می کند. البته نتیجه ای که بدست می آید همیشه آن چیزی نیست انتظار می رود.


نمونه هشت
?
۱
۲
۳
۴
۵

۵ + null // returns 5 because null is converted to 0
“۵” + null // returns “5null” because null is converted to “null”
“۵” + ۲ // returns 52 because 2 is converted to “2”
“۵” – ۲ // returns 3 because “5” is converted to 5
“۵” * “۲” // returns 10 because “5” and “2” are converted to 5 and 2

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

جاوا اسکریپت به طور خودکار تابع toString() متغیرها را هنگامی که می خواهید یک شی یا متغیر خروجی شما باشد، فراخوانی می کند.

document.getElementById(“demo”).innerHTML = myVar;

‎// 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”‎

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

Original
Value

Converted
to Number

Converted
to String

Converted
to Boolean

false

۰

“false”

false

true

۱

“true”

true

۰

۰

“۰”

false

۱

۱

“۱”

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

مقادیری که داخل علامت ” ” قرار گرفته اند نشانگر مقادیر رشته هستند. مقادیری که با رنگ آبی نمایش داده شده نشانگر مقادیری است که برخی برنامه نویسان ممکن است انتظار آن را نداشته باشند.