پرش به محتویات

تبدیل تایپ ها در جاوااسکریپت

بیشتر اوقات ، عملگرها و توابع به طور خودکار مقادیر داده شده به آنها را به نوع(type) مناسب تبدیل می کنند.

برای مثال تابع alert هر مقداری که بهش بدیم تبدیلش میکنه به string و بعد نشونش میده، عملگر های ریاضی مقدار ها رو به عدد تبدیل میکنن

همچنین توی بعضی موارد نیازه که به صورت دستی نوع یک مقدار رو عوض کنیم

تبدیل رشته‌ای (String Conversion)

تبدیل به 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 به "false" و null به "null" تبدیل میشه و برای بقیه مقادیر هم به همین ترتیب انجام میشه

تبدیل عددی (Numeric Conversion)

تبدیل به عدد توی فانکشن‌ها و عبارات ریاضیاتی به طور خودکار انجام می‌شه

برای نمونه وقتی تقسیم / روی مقادیر غیر عددی انجام میشه (اعداد از نوع رشته به نوع عددی تبدیل میشن):

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

وقتی داریم یه سری مقدار ها رو از یه جایی مثل input از کاربر میگیریم لازمه که به عدد تبدیلش کنیم

اگه رشته‌ای که وارد شده باشه یه عدد معتبر نباشه نتیجه‌ی تبدیلش به عدد NaN هست مثلا:

let age = Number("an arbitrary string instead of a number");
alert(age); // NaN, conversion failed

قواعد تبدیل به Number

مقدار تبدیل میشه به ...
undefined NaN
null 0
true و false 1 و 0
string فاصله‌های خالی ابتدا و انتها حذف می‌شوند. اگر رشته‌ی باقی مانده خالی باشد نتیجه 0 خواهد بود. در غیر اینصورت عدد موجود در رشته کاراکترها خوانده خواهد شد. همینطور اگر خطایی رخ دهد نتیجه NaN خواهد بود.

مثال:

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 تبدیل می‌شه

تبدیل منطقی (Boolean Conversion)

تبدیل به boolean راحت ترین حالته

نتیجه یه عملگر های شرطی Boolean هست و همچنین میتونیم با استفاده از Boolean(value) یه مقدار رو تبدیل کنیم

قاعده تبدیل به Boolean

مقادیری که در ظاهر "خالی" هستن، مثل 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 تبدیل میکنه اما توی جاوااسکریپت هر رشته‌ای که خالی نباشه با هر مقداری تبدیل میشه به true

alert( Boolean("0") ); // true
alert( Boolean(" ") ); // spaces, also true (any non-empty string is true)

خلاصه

سه تبدیل پرکاربردی که استفاده میشه، تبدیل رشته‌ای، عددی و منطقی هست

تبدیل به string - وقتی که می‌خوایم خروجی‌ای داشته باشیم اتفاق میوفته. از طریق String(value) قابل انجامه

تبدیل به number – در عملگرهای ریاضیاتی اتفاق میوفته. از طریق Number(value) هم قابل انجامه

تبدیل به boolean – در عملگرهای منطقی اتفاق میوفته. از طریق Boolean(value) قابل انجامه