در این بخش از سری آموزش جاوا اسکریپت قصد داریم به شما نحوه تبدیل نوع داده ها در جاوا اسکریپت را نشان بدیم.
تبدیل خودکار نوع داده
بیشتر اوقات جاوا اسکریپت بصورت خودکار مقادیر استفاده شده را از یک نوع به نوع دیگر تبدیل می کند.
برای مثال, در عملیات ریاضی, مقادیر به اعداد تبدیل می شوند. به هر حال همیشه نتیجه آن چیزی که انتظار دارید نحواهد بود :
1 2 3 4 5 6 7 8 9 10 11 12 |
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()
برای تبدیل رشته ها به عداد بهره ببرید.
1 2 3 4 5 |
var str = "123"; alert(typeof str); // Outputs: string var num = Number(str); // Becomes a number 123 alert(typeof num); // Outputs: number |
اگر رشته یک مقدار عددی معتبر نبود, نتیجه NaN
خواهد بود. برای رشته های خالی نیز تبدیل ۰ را برگشت می دهد.
1 2 3 4 5 6 7 8 9 10 11 12 |
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()
می توانید برای تبدیل یک مقدار به رشته استفاده کنید.
مثال زیر نحوه تبدیل یک مقدار بولین را به رشته نشان می دهد.
1 2 3 4 5 |
var bool = true; alert(typeof bool); // Outputs: boolean var str = String(bool); // Becomes a string "true" alert(typeof str); // Outputs: string |
متد String()
می تواند روی هر نوعی مثل عدد, متغیر یا عبارات استفاده شود.
1 2 3 4 5 6 7 8 9 |
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()
است:
1 2 3 4 5 |
var num = 123; alert(typeof num); // Outputs: number var str = num.toString(); // Becomes a string "123" alert(typeof str); // Outputs: string |
تبدیل مقادیر به بولین
تبدیل Boolean نیر همچنین بسیار ساده است. می توانید از متد Boolean()
برای تبدیل هر مقداری به مقدار بولین (true
یا false
) استفاده کنید.
مقادیر خالی مثل ۰
, null
, false
, undefined
, NaN
یا رشته خالی “”
تبدیل به false
می شوند و دیگر مقادیر تبدیل به true
خواهند شد.
1 2 3 4 5 6 7 8 9 10 11 12 |
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()
مقدار true
را برای رشته صفر “۰”
و “false”
در حالی که مقدار false
را برای مقادیر ۰
و false
برگشت داد.
نکته: در بعضی زبان های برنامه نویسی (مثل PHP) رشته “۰”
به عنوان false
در نظر گرفته می شود. اما در جاوا اسکریپت یک رشته غیرخالی همیشه مقدار true
را دارد.
تبدیل آبجکت به داده اولیه
همه تبدیل هایی که دیدید مربوط به عملیات روی نوع اولیه (نوع داده ای که می توانند همزمان فقط در یک مقدار قرار بگیرند.). اما چه اتفاقی با نوع داده های پیشرفته مثل شی (Object) می افتد.
جاوا اسکریپت بصورت خودکاذ عملیات تبدیل آبجکت به رشته را زمانی که ما قصد چاپ یک شی را داریم انجام می دهد مثل alert(obj)
یا document.write(obj)
.
تبدیل آبجکت به عدد نیز بصورت خودکار زمانی که قصد اضافه یا کم کردن به آبجکت ها یا انجام عملیات ریاضی داریم, انجام می شود.
1 2 3 4 5 6 |
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
برای تبدیل آبجکت به عدد استفاده کنید.
1 2 3 4 5 6 |
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
هستند. بنابراین فقط تبدیل عددی و رشته ای وجود دارد.
تبدیل نوع داد با اپراتورها
اپراتورهای جاوا اسکریپت مثل +
و –
می توانند می توانند به عنوان مبدل نوع داده نیز همانند مثال زیر استفاده شوند.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
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 |
امیدواریم مفاهیم پایه تبدیل داده ها را کامل متوجه شده باشد. برای یادگیری بیشتر در مورد انواع داده های مختلف موجود در جاوا اسکریپت به بخش انواع داده ها در جاوا اسکریپت را سر بزنید.
هر سوالی داشتید ، از قسمت نظرات ارسال کنید . سریعا ، پاسخگوی سوالات شما هستیم .
موفق باشید.