وقتی یه عدد رو با رشته جمع میکنم به صورت یه رشته برمیگردونه ولی وقتی تفریق میکنم به صورت عدد برمیگردونه
Console.log("7"+2)//72
Console.log("7"-2)//5
چرا آیا
یکی از کاربردهای عملگر + عمل concat رشته ها بهم هست. هر زمانی یک رشته رو با یک عدد جمع کنید، عدد به رشته cast شده و عمل concat صورت میگیره.(اولویت رشته بالاتره)
ولی در مثال دوم عملگر تفریق هست و رشته ها به عدد cast میشن و عمل تفریق صورت میگیره.
console.log("1" - "1"); // 0
عرض سلام و وقت بخیر ؛
در ادامه و تصدیق فرمیشات دوست خوبم جناب موحد باید عرض کنم دوست من شما حتی میتونی برای رفع این قضیه یعنی زمانی که شما از عملگر + اسفاده میکنید برای جمع رشته و عدد با توجه به مثالی که زدید یعنی بجای نمایش عدد 9 به شما عدد 72 رو نشون میده از عملگر unary اسفاده کنی توی این قسمت توضیح دادم چی هست مثال میزنم برات
var num1 = '7',
num2 = 2;
console.log(+num1 + num2)
و خروجی عدد 9 رو برات برمیگردونه. امیدوارم توسته باشم کمکی کرده باشم
چون عملگر + یک استثنا است اگر دو عملوند ای که باهم جمع میشوند حداقل یکی از این عملوند ها رشته باشد این دو عملوند با هم concat خواهد شد.اما سایر عملگر ها مثل /*- ابتدا عملوند به عدد تبدیل میشود و اگر به عدد تبدیل نشود نتیجه محاسبه NAN خواهد شد.