بحث امروز ما توابع تبدیل نوع در جاوا اسکریپت میباشد. که ممکن برای شما هم پیش امده باشدکه بخواهید متغیر ها یز نوع های مختلف را بهم نسبت بدید.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
مقادیری که داخل علامت ” ” قرار گرفته اند نشانگر مقادیر رشته هستند. مقادیری که با رنگ آبی نمایش داده شده نشانگر مقادیری است که برخی برنامه نویسان ممکن است انتظار آن را نداشته باشند.