تبدیل نوع داده(Type Conversions)در جاوا اسکریپت

به نام خدا با عرض سلام و وقت بخیر خدمت دوستان گرامی در راستای آموزش مقدماتی جاوا اسکریپت این جلسه به مبحث تبدیل نوع داده در جاوا اسکریپت خواهیم پرداخت باهما همراه باشید.درجاوا اسکریپ ما دو  نوع تبدیل داده داریم تبدیل داده خودکار و تبدیل داده به صورتی دستی.

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

اولین نوع تبدیل داده در جاوا اسکریپت تبدیل خودکار می باشد.که اغلب اوقات جاوا اسکریپت به طور خودکار مقادیر را از یک نوع داده به نوع دیگری تبدیل می کند که در عبارات استفاده می شود. به عنوان مثال، در عملیات ریاضی مقادیر به طور خودکار به اعداد تبدیل می شوند. با این حال، باز هم نتیجه نهایی همیشه آن چیزی نیست که انتظار داشتیم:

alert("3" - 2);  // Outputs: 1 
alert("3" + 2);  // Outputs: "32" (because + is also concatenation operator)
alert(3 + "2");  // Outputs: "32"
alert("3" * "2");  // Outputs: 6
alert("10" / "2");  // Outputs: 5
alert(1 + true);  // Outputs: 2 (because true is converted to 1)
alert(1 + false);  // Outputs: 1 (because false is converted to 0)
alert(1 + undefined);  // Outputs: NaN
alert(3 + null);  // Outputs: 3 (because null is converted to 0)
alert("3" + null);  // Outputs: "3null"
alert(true + null);  // Outputs: 1
alert(true + undefined);  // Outputs: NaN

بعضی از مواقع ما نیاز داریم که به صورت دستی یک مقدار را از یک نوع داده به نوع دیگر تبدیل کنیم.که جاوا اسکریپت روش های متعددی را برای انجام چنین عملیاتی جهت تبدیل نوع داده ارائه میدهد.

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

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

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

به عنوان مثال:

var str = "123";
alert(typeof str); // Outputs: string

var num = Number(str); // Becomes a number 123
alert(typeof num); // Outputs: number

اگر رشته ورودی ما یک عدد نامعتبر باشد.نتیجه حاصل NaN خواهد بود.رشته های خالی عدد صفر را برا ما برمیگردانند.

Number("10.5")  // returns 10.5
Number(true)  // returns 1
Number(false)  // returns 0
Number(null)  // returns 0
Number(" 123 ")  // returns 123
Number(" ")  // returns 0
Number("")  // returns 0
Number("123e-1")  // returns 12.3
Number("0xFF") // returns 255 (hexadecimal representation)
Number("undefined")  // returns NaN
Number("null")  // returns NaN
Number("Hello World!")  // returns NaN

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

به طور مشابه، می توانیم از متد ()String برای تبدیل یک مقدار به رشته استفاده کنیم.

مثال زیر به ما نشان می دهد که چگونه یک مقدار بولی را به رشته تبدیل کنیم.

var bool = true;
alert(typeof bool); // Outputs: boolean

var str = String(bool); // Becomes a string "true"
alert(typeof str); // Outputs: string

متد  ()Stringرا می توان روی هر نوع داده اعم از  اعداد، متغیرها یا عبارت ها استفاده کرد:

String(10.5)  // returns "10.5"
String(123)  // returns "123"
String(100 + 23)  // returns "123"
String(true)  // returns "true"
String(false)  // returns "false"
String(123e-1)  // returns "12.3"
String(0xFF) // returns "255"
String(undefined)  // returns "undefined"
String(null)  // returns "null"

یک روش دیگر برای تبدیل اعداد به رشته، استفاده از متد()toString  می باشد:

var num = 123;
alert(typeof num); // Outputs: number

var str = num.toString(); // Becomes a string "123"
alert(typeof str); // Outputs: string

Converting Values to Boolean

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

مقادیری که به طور شهودی خالی هستند.مثل  0nullfalseundefinedNaN و یا یک رشته خالی ("") ،در این نوع تبدیل همگی  false هستند.وبقیه مقادیر مقدار   true را برمیگردانند.به عنوان مثال:

Boolean(0) // returns false
Boolean(null)  // returns false
Boolean(false)  // returns false
Boolean(undefined)  // returns false
Boolean(NaN)  // returns false
Boolean("") // returns false
Boolean("0") // returns true
Boolean(1) // returns true
Boolean(true) // returns true
Boolean("false") // returns true
Boolean("Hello World!") // returns true
Boolean(" ") // returns true

اگر به مثال های بالا دقت کنیم میبینیم که متد  ()Boolean برای مقادیر رشته ایه صفر و “false” مقدار true  را برای ما برگردانده در حالی که برای خود صفر و مقدار false  نتیجه کار false شده است.

نکته:توجه: در برخی از زبان های برنامه نویسی (مثلا PHP) رشته “0” به عنوان false در نظر گرفته می شود.اما در جاوا اسکریپت یک رشته غیر خالی همیشه true است.

Object to Primitive Conversions

تمام تبدیل‌هایی که تاکنون دیده‌ایم بر روی داده های اولیه(انواع داده ای که می توانند تنها یک مقدار را در یک زمان نگه دارند) انجام می‌شوند.که برای داده های پیچیده مانند ابجکت ها چه اتفاقی می افتد؟

جاوا اسکریپت به طور خودکار تبدیل شی به رشته را انجام می دهد زمانی که ما سعی می کنیم یک شی مانند  document.write(obj) و alert(obj) را چاپ کنیم. هنگامی که ما سعی می کنیم چیزی به اشیا  اضافه یا از ان چیزی کم کنیم یا توابع ریاضی را اعمال کنیم، به عنوان مثال، اضافه کردن یا تفریقابجکت تاریخ، تبدیل شی به عدد به طور خودکار انجام می شود.به عنوان مثال:

var date1 = new Date(2018, 5, 24);
alert(date1); // Display date string like: Sun Jun 24 2018 00:00:00

var date2 = new Date(2025, 8, 15);
var time = date2 - date1;
alert(time) // Display time in milliseconds: 228096000000

ما همچنین می توانیم تبدیل شی به رشته را به صورت دستی با استفاده از متد  ()toString انجام دهیم که نمایش رشته ای از شی را برمی گرداند، علاوه بر این، می توانیم از متد ()valueOf روی برخی از اشیا مانند Date برای انجام تبدیل شی به عدد استفاده کنیم.به عنوان مثال:

var arr = [1, 2, 3];
arr.toString(); // returns "1,2,3"

var d = new Date(2018, 5, 24);
d.toDateString(); // returns date like Sun Jun 24 2018 00:00:00
d.valueOf(); // returns 1529778600000

توجه:همه اشیا (از جمله آرایه ها و توابع) درتبدیل به بولین true هستند. 

Type Conversions Using Operators

برخی از عملگرهای جاوا اسکریپت، مانند عملگرهای  + و -  نیز می توانند برای انجام تبدیل نوع استفاده شوند،به عنوان مثال:

var x = "10"; // x is a string
var y = +x;
alert(typeof(y)); // Outputs: number
alert(y); // Outputs: 10

var x = 10; // x is a number
var y = x + "";
alert(typeof(y)); // Outputs: string
alert(y); // Outputs: 10

var x = "15"; // x is a string
var y = x - 0;
alert(typeof(y)); // Outputs: number
alert(y); // Outputs: 15

var x = "123";
alert(typeof(!!x)); // Outputs: boolean
alert(!!x); // Outputs: true

var x = "Hello World!";
var y = +x;
alert(typeof(y));// Outputs: number
alert(y); // Outputs: NaN

به پایان این جلسه رسیدیم امیدواریم اصول تبدیل نوع داده را درک کرده باشید.

سایر مقالات

اشیاء(Objects) در جاوا اسکریپت

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

برای امتیاز به این نوشته کلیک کنید!
[کل: 0 میانگین: 0]
اشتراک‌گذاری

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *