6- آموزش جاوااسکریپت | تبدیل انواع داده (Type Conversion & Coercion)
در این بخش با نحوه تبدیل انواع دادهها در جاوااسکریپت آشنا میشویم. یاد میگیریم چگونه دادهها را به صورت دستی از رشته به عدد (و برعکس) تبدیل کنیم و همچنین با مفهوم «اجبار نوع» یا Type Coercion آشنا میشویم که در آن جاوااسکریپت بهصورت خودکار تغییر نوع داده را انجام میدهد.
در آموزشهای قبلی با انواع دادههای Primitive و Reference آشنا شدیم. در دنیای واقعی برنامهنویسی، بسیار پیش میآید که دادهها با نوع متفاوتی از آنچه نیاز داریم به دست ما برسند. برای مثال، دادههایی که از فرمهای وبسایت دریافت میشوند، بهصورت پیشفرض رشته (String) هستند؛ اگر بخواهیم با آنها محاسبات ریاضی انجام دهیم، باید آنها را به عدد (Number) تبدیل کنیم. به این فرآیند Type Conversion میگوییم.
تبدیل مقادیر به رشته (String)
برای تبدیل انواع دادهها به رشته، دو روش اصلی وجود دارد:
1) استفاده از تابع String()
این تابع مقدار را گرفته و آن را به رشته تبدیل میکند.
let val = 5;
// تبدیل عدد به رشته
val = String(val);
console.log(typeof val); // "string"
console.log(val.length); // 1
این تابع روی مقادیر دیگر هم کار میکند:
String(true)-> "true"String([1, 2, 3])-> "1,2,3"
2) استفاده از متد .toString()
این متد روی خودِ مقدار فراخوانی میشود:
let val = (5).toString();
let bool = true.toString();
تبدیل مقادیر به عدد (Number)
برای تبدیل رشتهها یا سایر دادهها به عدد، روشهای متعددی داریم:
1) استفاده از تابع Number()
این تابع تلاش میکند مقدار ورودی را به عدد تبدیل کند.
let val = Number("5"); // عدد 5
نکته مهم (NaN): اگر رشتهای که وارد میکنید قابل تبدیل به عدد نباشد (مثلاً "hello")، جاوااسکریپت مقدار NaN (مخفف Not a Number) را برمیگرداند. این یک مقدار عددی خاص است که نشان میدهد عملیات ریاضی ناموفق بوده است.
2) استفاده از parseInt و parseFloat
برای تبدیل دقیقتر، مخصوصاً وقتی با اعداد اعشاری سروکار داریم:
let val = parseInt("100"); // 100
let floatVal = parseFloat("100.30"); // 100.3
parseInt: بخش صحیح عدد را برمیگرداند.parseFloat: بخش اعشاری را نیز حفظ میکند.
تبدیل نوع خودکار (Type Coercion)
گاهی اوقات ما خودمان تبدیل را انجام نمیدهیم، بلکه جاوااسکریپت بهصورت هوشمند (یا گاهی گیجکننده!) این کار را در حین اجرای عملیات انجام میدهد. به این پدیده Type Coercion میگوییم.
مثال کلاسیک:
const val1 = 5;
const val2 = '6';
const sum = val1 + val2;
console.log(sum); // "56"
در اینجا، جاوااسکریپت چون با یک رشته و یک عدد روبرو شده، عدد را به رشته تبدیل کرده و آنها را به هم چسبانده (Concatenate) است. برای جلوگیری از این اتفاق و انجام محاسبات صحیح، همیشه سعی کنید دادهها را پیش از محاسبات به نوع عددی تبدیل کنید:
const sum = val1 + Number(val2); // 11
جمعبندی
در این آموزش یاد گرفتیم:
- چگونه با
String()یا.toString()دادهها را به رشته تبدیل کنیم. - چگونه با
Number()،parseInt()وparseFloat()دادهها را به عدد تبدیل کنیم. - مفهوم
NaNبه عنوان خروجی ناموفق تبدیل داده. - تفاوت تبدیل دستی با Type Coercion (تبدیل خودکار توسط جاوااسکریپت).
در آموزش بعدی به سراغ Math Object میرویم تا ابزارهای پیشرفتهتری برای انجام محاسبات ریاضی در جاوااسکریپت یاد بگیریم.