اغلب اوقات، عملگرها و توابع به طور خودکار مقادیر داده شده به آنها را به نوع مناسب تبدیل می کنند. به عنوان مثال، هشدار به طور خودکار هر مقدار را به رشته ای تبدیل می کند تا آن را نشان دهد. عملیات ریاضی مقادیر را به اعداد تبدیل می کند.
همچنین مواردی وجود دارد که ما نیاز به تبدیل صریح یک مقدار به نوع مورد انتظار داریم.
تبدیل رشته
تبدیل رشته زمانی اتفاق میافتد که به شکل رشتهای یک مقدار نیاز داشته باشیم.
به عنوان مثال، alert(value) این کار را برای نشان دادن مقدار انجام می دهد.
همچنین میتوانیم تابع String(value) را برای تبدیل یک مقدار به رشته فراخوانی کنیم:
letvalue=true;alert(typeofvalue);// booleanbooleanvalue=String(value);// now value is a string "true"alert(typeofvalue);// string
تبدیل رشته بیشتر واضح است. یک false تبدیل به "false" ، و یک null تبدیل به "null" و غیره می شود.
تبدیل عددی
تبدیل عددی در توابع و عبارات ریاضی به طور خودکار اتفاق می افتد.
به عنوان مثال، وقتی تقسیم / به غیر اعداد اعمال می شود:
alert( "6" / "2" ); // 3, strings are converted to numbers
ما می توانیم از تابع Number(value) برای تبدیل صریح یک مقدار به عدد استفاده کنیم:
letstr="123";alert(typeofstr);// stringletnum=Number(str);// becomes a number 123alert(typeofnum);// number
تبدیل صریح معمولاً زمانی مورد نیاز است که مقداری را از یک منبع مبتنی بر رشته مانند یک فرم متنی می خوانیم اما انتظار داریم یک عدد وارد شود.
اگر رشته یک عدد معتبر نباشد، نتیجه چنین تبدیلی NaN است. به عنوان مثال:
letage=Number("an arbitrary string instead of a number");alert(age);// NaN, conversion failed
قوانین تبدیل عددی:
| مقدار | خروجی |
| undefined | NaN |
| null | 0 |
| true and false | 1 OR 0 |
| string | فضاهای سفید (شامل فضاها، تب \t، خطوط جدید \n و غیره) از ابتدا و انتها حذف می شوند. اگر رشته باقی مانده خالی باشد، نتیجه 0 است. در غیر این صورت، عدد از رشته "خوانده می شود". و در صورت عدم امکان تبدیل یک خطا NaN می دهد. |
مثال:
alert(Number(" 123 "));// 123alert(Number("123z"));// NaN (error reading a number at "z")alert(Number(true));// 1alert(Number(false));// 0
لطفاً توجه داشته باشید که null و undefined در اینجا رفتار متفاوتی دارند: null صفر می شود در حالی که undefined تبدیل به NaN می شود.
تبدیل بولی
تبدیل بولی ساده ترین روش است.
این در عملیات منطقی اتفاق میافتد (بعداً با آزمایشهای شرط و موارد مشابه دیگر روبرو خواهیم شد) اما میتواند به طور صریح با فراخوانی Boolean (value) نیز انجام شود.
قانون تبدیل:
- مقادیری که به طور مستقیم "تهی" هستند، مانند 0، یک رشته خالی، null، undefined و NaN، به false تبدیل می شوند.
- مقادیر دیگر true می شوند.
به عنوان مثال:
alert(Boolean(1));// truealert(Boolean(0));// falsealert(Boolean("hello"));// truealert(Boolean(""));// false
لطفا توجه داشته باشید: رشته با صفر "0" درست است
برخی از زبان ها (مثلا PHP) "0" را نادرست می دانند. اما در جاوا اسکریپت، یک رشته غیر خالی همیشه درست است.
alert(Boolean("0"));// truealert(Boolean(" "));// spaces, also true (any non-empty string is true)