بیشتر مواقع عملگرها و فانکشنها به طور خودکار مقادیری که به آنها داده میشود را به نوع صحیح تبدیل میکنند. به این عمل “تبدیل نوع داده (Type Conversions)” گفته میشود.
برای نمونه فانکشن alert
مقدار ورودی خود را به نوع دادهی string تبدیل میکند. عملگرهای ریاضیاتی مقادیر را به نوع number تبدیل میکنند.
همینطور شرایطی وجود دارد که ما نیاز داریم مقدار را به نوع مورد نظرمان تبدیل کنیم.
در این بخش در مورد object ها صحبت نمیکنیم. فعلا فقط درباره انواع اولیه (primitives) صحبت میکنیم.
تبدیل به string
تبدیل به string زمانی رخ میدهد که ما به نوع رشتهای کاراکترهای یک مقدار نیاز داریم.
برای نمونه alert(value)
تبدیل به string را برای نمایش انجام میدهد.
همینطور میتوانیم با صدا زدن String(value)
تبدیل یک مقدار به string را انجام دهیم.
let value = true;
alert(typeof value); // boolean
value = String(value); // now value is a string "true"
alert(typeof value); // string
تبدیل به string عموما واضح است. false
به "null
، "false
به "null"
و برای بقیه مقادیر هم به همین ترتیب انجام میشود.
تبدیل به number
تبدیل به number در فانکشنها و عبارات ریاضیاتی به طور خودکار انجام میشود.
برای نمونه وقتی تقسیم /
بر روی مقادیر غیر عددی رخ میدهد :
alert( "6" / "2" ); // 3, strings are converted to numbers
به طور مشخص برای تبدیل یک مقدار به عدد میتوانیم از فانکشن Number(value)
استفاده کنیم.
let str = "123";
alert(typeof str); // string
let num = Number(str); // becomes a number 123
alert(typeof num); // number
معمولا زمانی که مقداری را از ورودی های یک فرم دریافت میکنیم نوع داده این ورودی به صورت رشته (string) میباشد درحالی که به نوع عددی (Number) ورودی نیاز داریم. به همین علت باید ورودی را به مقدار عددی (Number) تبدیل کنیم.
اگر نتیجه، عدد معتبری نباشد نتیجه تبدیل NaN
خواهد بود. برای نمونه:
let age = Number("an arbitrary string instead of a number");
alert(age); // NaN, conversion failed
قواعد تبدیل به number :
Value | Becomes… |
---|---|
undefined |
NaN |
null |
0 |
true and false |
1 and 0 |
string |
فاصلههای خالی ابتدا و انتها (شامل spaceها، tabها \t و خطوط جدید \n و دیگر موارد) حذف میشوند. اگر رشتهی باقی مانده خالی باشد نتیجه 0 خواهد بود. در غیر اینصورت عدد موجود در رشته کاراکترها «خوانده» خواهد شد. اگر خطایی رخ دهد نتیجه NaN خواهد بود. |
Examples:
alert( Number(" 123 ") ); // 123
alert( Number("123z") ); // NaN (error reading a number at "z")
alert( Number(true) ); // 1
alert( Number(false) ); // 0
لطفا در نظر داشته باشید که null
و undefined
در اینجا متفاوت عمل میکنند. Null
به 0
تبدیل میشود و undefined
به NaN
تبدیل میشود.
تقریبا همهی عملگرهای ریاضیاتی، مقادیر را به عدد (number) تبدیل میکنند. تنها یک استثنا وجود دارد و آن +
است. اگر یکی از مقادیر string باشد، بقیه مقادیر نیز به string تبدیل میشوند.
سپس string ها را بهم میچسباند:
alert( 1 + '2' ); // '12' (string to the right)
alert( '1' + 2 ); // '12' (string to the left)
این مورد فقط زمانی روی میدهد که حداقل یکی از مقادیر string باشد، در غیر اینصورت تمام مقادیر به number تبدیل میشوند.
تبدیل به boolean
تبدیل به boolean آسانترین حالت است.
این مورد در عملیات منطقی (مانند عبارات شرطی که با آنها در بخشهای بعدی آشنا خواهیم شد) رخ میدهد. همینطور به صورت مشخص نیز میتوان با فانکشن Boolean(value)
اینکار را انجام داد.
قاعده تبدیل :
- مقادیری که در ظاهر “خالی” هستند، مانند
0
،string
خالی ،null
،undefined
وNaN
بهfalse
تبدیل میشوند. - بقیه مقادیر به
true
تبدیل میشوند.
برای نمونه :
alert( Boolean(1) ); // true
alert( Boolean(0) ); // false
alert( Boolean("hello") ); // true
alert( Boolean("") ); // false
0
برابر با true
خواهد بودبرخی زبانها (مانند PHP) با "0"
به عنوان false
برخورد میکنند. اما در جاوا اسکریپت هر string ـی که خالی نباشد true
خواهد بود.
alert( Boolean("0") ); // true
alert( Boolean(" ") ); // spaces, also true (any non-empty string is true)
خلاصه
سه نوع تبدیل نوع داده، که بطور گسترده مورد استفاده قرار میگیرد، تبدیل به string ، تبدیل به number و تبدیل به boolean است.
تبدیل به string
– زمانی که میخواهیم خروجیای داشته باشیم رخ میدهد. از طریق String(value)
قابل انجام است. تبدیل به string معمولا وقتی مقدار از انواع اولیه داده (primitive values ) است، واضح خواهد بود.
تبدیل به number
– در عملگرهای ریاضیاتی رخ میدهد. از طریق Number(value)
قابل انجام است.
این تبدیل از این قوانین پیروی میکند :
Value | Becomes… |
---|---|
undefined |
NaN |
null |
0 |
true / false |
1 / 0 |
string |
رشته همانطور که «هست» خوانده میشود و فاصلههای خالی (شامل spaceها، tabها \t ، خطوط جدید \n و غیره) نادیده گرفته میشوند. یک رشته خالی 0 میشود. ارور NaN را نتیجه میدهد. |
تبدیل به boolean
– در عملگرهای منطقی رخ میدهد. از طریق Boolean(value)
قابل انجام است.
این تبدیل از این قوانین پیروی میکند :
Value | Becomes… |
---|---|
0 , null , undefined , NaN , "" |
false |
any other value | true |
اکثر این قوانین آسان بوده و ساده به خاطر میمانند. استثناهایی که معمولا در آن اشتباه میکنیم :
-
undefined
به عنوان number برابرNaN
خواهد بود و0
نخواهد بود. -
"0"
و string حاوی جای خالی" "
به عنوانboolean
برابر true خواهند بود.
در اینجا در مورد تبدیل object ها صحبت نکردیم و در بخشهای بعدی به آنها خواهیم پرداخت.