تو جاوااسکریپت یه سری راه ساده و سرراست برای تبدیل کردن یک متغیر از یک نوع به نوع دیگه هست که فرنگیها بهش میگن lazy ways و درصورت نیاز میتونیم ازشون برای تبدیل یک متغیر از یک نوع داده به یک نوع داده دیگه استفاده کنیم. مثلا وقتی یک عدد که در قالب رشته (string) هست ضربدر یک عدد دیگه کنیم، نتیجه از نوع عدد میشه. این حالت برای عملگر منها یا همون تفریق هم حاکمه!
console.log("5" * 2) // 10 typeof("5" * 2) // number console.log("5" - 2) // 3 typeof("5" - 2) // number
در نتیجه اگه یک عدد که به صورت رشتهی متنی هست رو ضربدر یک کنیم از نوع رشتهی متنی تبدیل به نوع عدد میشه، یا میتونیم اون رشته رو منهای صفر کنیم!
console.log("5" * 1) // 5 typeof("5" * 1) // number console.log("5" - 0) // 5 typeof("5" - 0) // number
این قوانین شامل اعداد اعشاری هم میشه. علاوه بر این، اگه دو طرف عملگر * هر دو عددی به صورت رشته متنی باشند، باز هم حرفهایی که زدیم صادق هستند:
console.log("5" * "2") // 10 typeof("5" * "2") // number
حرفهایی که برای عملگرهای ضرب و منها زدیم، برای عملگر + صادق نیست! چرا؟ چون علامت + علاوه بر وظیفهای که تو عملیاتهای ریاضی داره، برای الحاق (همون چسبوندن خودمون) دو رشته متنی به همدیگه هم استفاده میشه. برای همین وقتی یک عدد که به صورت رشته متنی هست رو با یک عدد جمع میکنیم، جاوااسکریپت طرف دوم که عدد هست رو تبدیل به رشته میکنه و اون رو به رشته اول میچسبونه!
"5" + 1 // "51" typeof("5" + 1) // string
با توجه به حرفهایی که زدیم، یه روش ساده (lazy way) برای تبدیل عدد به رشته جمع کردنش با یه رشتهی خالی هست. منظور از رشتهی خالی همون “” هست.
25 + "" // "25" typeof(25 + "") // string
امیدوارم در آینده بیشتر بتونیم راجع به جاوااسکریپت حرف بزنیم.
قربان شما،
آمیرزا
توی مثال آخر ۲۵ باید عدد باشه
ممنون از تذکرتون.
دوباره چک کردم مثالها رو، حتی typeof هرکدوم از مثالها رو هم جهت اطمینان به نوشته اضافه کردم.
شاید چون مثالها توی ()console.log بودند موقع اجرا اینطور به نظر میومد که عدد هست نه رشته!