
معمولا عملگرها و توابع به صورت خودکار مقداری را که به آنها میفرستیم به دیتاتایپ مناسب تغییر میدهند.
مثلاً تابع alert به صورت خودکار مقدار درونش را به رشته تغییر می دهد تا آن را نمایش دهد. در عملیات ریاضی مثل ضرب و تقسیم و… مقادیر به عدد تبدیل میشود تا عملیات مورد نظر قابل انجام باشد.
گاهی موارد لازم است تا مقدار را از یک دیتاتایپ خاص به نوع دیگری تبدیل کنیم.
فعلا در مورد اشیاء صحبت نمی کنیم
در این مطلب، نکات مربوط به اشیاء را بررسی نمی کنیم. ابتدا سعی می کنیم تا مطالب سادهتر و اولیه را پوشش دهیم. پس از آن که در مقالات بعدی اندکی در مورد اشیاء یاد گرفتیم، خواهیم دید که چطور میتوان آنها را به دیتاتایپهای دیگر تبدیل کرد.
تبدیل به رشته
زمانی که به حالت رشتهای یک مقدار نیاز داریم این تبدیل اتفاق میافتد.
مثلاً در اجرای alert(value) این تبدیل به صورت خودکار انجام میشود تا مقدار را نمایش دهد.
با فراخوانی تابع String(value) میتوانیم مقدار را به رشته تبدیل کنیم:
let value = true;
alert(typeof value); // boolean
value = String(value); // حالا متغیر value مقدار "string" را داراست
alert(typeof value); // stringتبدیل به رشته در بیشتر موارد واضح و مشخّص است و نکتهی پیچیدهای ندارد. مقدار false به "false" و null به "null" تبدیل می شود.
تبدیل به عدد
این تبدیل در توابع و عبارتهای ریاضی به طور خودکار رخ می دهد.
برای مثال وقتی عملگر ضرب یعنی * روی مقدار غیر عددی اعمال می شود:
alert( "3" * "1" ); // 3, رشته ها به عدد تبدیل می شوندمی توانیم از تابع Number(value) استفاده کنیم تا مقدار غیر عددی را به عدد تبدیل کنیم:
let str = "123";
alert(typeof str); // string
let num = Number(str); // تبدیل می شود به ۱۲۳
alert(typeof num); // numberگاهی مواقع لازم است که این تبدیل را صریحاً انجام دهیم. مثلا وقتی محتوای وارد شده در یک فیلد از فرم را بررسی می کنیم، و از کاربر انتظار داریم که مقدار عددی مثلا سن خود را وارد کند، لازم است مقدار خروجی این فیلد را به عدد تبدیل کنیم. زیرا در حالت عادی مقدار فیلدهای متنی رشته است.
اگر رشته واقعاً عددی نباشد، نتیجهی این تبدیل مقدار NaN خواهد بود. برای نمونه:
let age = Number("یک رشته ی دلخواه به جای عدد");
alert(age); // NaN, تبدیل با شکست مواجه می شودقوانین تبدیل عددی:
| مقدار | تبدیل میشود به… |
| undefined | NaN |
| null | 0 |
| true و false | 1 و ۰ |
| string | فاصلههای ابتدا و انتهای رشته حذف می شود. اگر رشتهٔ باقیمانده خالی باشد، نتیجهٔ تبدیل ۰ خواهد بود. در غیر این صورت رشته به عنوان یک عدد در نظر گرفته میشود. اگر در تبدیل رشته با خطا مواجه شود نتیجه NaN خواهد شد. |
مثال هایی را با هم بررسی کنیم:
alert( Number(" 123 ") ); // 123
alert( Number("123z") ); // NaN (چون 'z' یک عدد نیست با خطا مواجه می شویم)
alert( Number(true) ); // 1
alert( Number(false) ); // 0به یاد داشته باشید که null و undefined در این جا متفاوت هستند. null به ۰ تبدیل می شود در حالیکه undefined به NaN تبدیل می شود.
علامت ‘+’ رشته ها را به هم متصل (الحاق) می کند
تقریباً همهٔ عملگرهای ریاضی مقادیر را به عدد تبدیل می کنند. البته عملگر ریاضی + استثناست. اگر یکی از دو مقداری که با هم جمع می شوند رشته باشد، دیگری هم به رشته تبدیل می شود.
بعد این دو رشته با هم الحاق (اصطلاحاً concat) می شوند:
alert( 1 + '2' ); // '12'
alert( '1' + 2 ); // '12'این اتفاق فقط زمانی رخ می دهد که حداقل یکی از دو طرف رشته باشد. در غیر این صورت مقادیر به عدد تبدیل می شوند.
تبدیل به بولین (boolean)
تبدیل به بولین ساده ترین نوع تبدیل است.
این اتفاق در فرایند های منطقی رخ می دهد اما می توانیم صراحتاً تابع Boolean(value) را فراخوانی کنیم و تبدیل را انجام دهیم.
قوانین این نوع تبدیل:
- مقادیری که به طور مستقیم خالی هستند، مانند رشتهٔ خالی
''،null،undefinedوNaNبهfalseتبدیل می شوند. - بقیه ی مقادیر به
trueتبدیل می شوند.
برای نمونه:
alert( Boolean(1) ); // true
alert( Boolean(0) ); // false
alert( Boolean("hello") ); // true
alert( Boolean("") ); // falseلطفا به یاد داشته باشید که رشتهٔ "۰" می شود true
بعضی زبان ها "۰" را به false تبدیل میکنند. اما در جاوااسکریپت، رشتهٔ غیر خالی همواره true خواهد بود.
alert( Boolean("0") ); // true
alert( Boolean(" ") ); // spaceها هم true هستند (هر رشته ی غیرخالی true است)خلاصه
سه تبدیل پرکاربرد در جاوااسکریپت عبارت است از تبدیل به عدد، رشته و بولین.
تبدیل به رشته – با تابع String(value) قابل انجام است.
تبدیل به عدد – در عملیات ریاضی انجام می شود. با فراخوانی تابع Number(value) قابل انجام است.
تبدیل از قوانین زیر پیروی می کند:
| مقدار | تبدیل میشود به… |
| undefined | NaN |
| null | 0 |
| true و false | 1 و ۰ |
| string | فاصلههای ابتدا و انتهای رشته حذف می شود. اگر رشتهٔ باقیمانده خالی باشد، نتیجهٔ تبدیل ۰ خواهد بود. در غیر این صورت رشته به عنوان یک عدد در نظر گرفته میشود. اگر در تبدیل رشته با خطا مواجه شود نتیجه NaN خواهد شد. |
تبدیل به بولین – در عملیات منطقی رخ می دهد. این تبدیل با فراخوانی تابع Boolean(value) هم انجام می شود.
این تبدیل از قوانین زیر پیروی می کند:
| مقدار | تبدیل میشود به… |
۰, null, undefined, NaN, " " | false |
| هر مقدار دیگر | true |
حفظ و بهخاطر سپردن این قواعد ساده است. البته معمولاً بعضی افراد اشتباهاتی میکنند که عبارتند از:
undefinedبعد از تبدیل به عدد میشودNaN، نه۰."۰"و رشته هایی که فقط از space تشکیل شدند مانند" "بعد از تبدیل به بولین بهtrueتبدیل می شوند.
ما در این مطلب به دیتاتایپ شیء نپرداختیم. پس از آن که چیز های بیشتری در مورد مفاهیم پایهٔ جاوااسکریپت یاد گرفتیم آنگاه در مورد تبدیل اشیاء بحث خواهیم کرد.