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