
کار با داده ها و اطلاعات مانند ذخیره کردن آنها یکی از معمولترین کارهایی است که در ابتدای هر برنامه انجام میشود. در طول اجرای برنامه این داده ها به وسیله عملیات و عمگر های مختلف دستخوش تغییرات می شوند تا داده های جدید و مورد نیاز تولید گردند. به عنوان مثال شما در ابتدای بازی پین بال امتیاز کاربر را صفر در نظر میگیرید و پس از اینکه بازیکن هدفی را با توپ میزند باید امتیاز او را افزایش دهید، یا در یک سبد خرید باید تعداد هر آیتم را در فی یا قیمت آن ضرب و با جمع کل قیمت فاکتور را محاسبه کنید.
جاوا اسکریپت عملگرهای مختلفی را برای ایجاد تغییر در دادهها فراهم کرده است. عملگر (operator) علامت یا کلمه ای است که می تواند یک یا چند مقدار را به چیزی دیگر تبدیل کند، برای مثال شما از علامت + (عملگر جمع) برای جمع کردن دو مقدار با هم دیگر استفاده میکنید. در جاوا اسکریپت عملگرهای مختلفی برای کار با نوع داده های مختلف مانند عددی، رشته ای و بولی وجود دارد.
جاوا اسکریپت از عملگرهای پایه ریاضی مانند جمع، تفریق، تقسیم و ضرب پشتیبانی میکند، در جدول زیر عملگرهای اصلی ریاضی به همراه شیوه استفاده از آنها قرار داده شده است.
عملگر | چه کاری انجام میدهد | نحوه استفاده |
---|---|---|
+ | جمع دو عدد | 25+5 |
– | تفریق یک عدد از عدد دیگر | 25-5 |
* | ضرب دو عدد | 5*5 |
/ | تقسیم یک عدد بر عدد دیگر | 25/5 |
** | توان (ECMAScript) | 3**3 |
% | محاسبه باقیمانده تقسیم | 6%2 |
++ | افزایش یک واحدی | i++ |
— | کاهش یک واحدی | i– |
ما در ریاضیات از علامت ضربدر× برای ضرب و تقسیم ÷ برای تقسیم کردن استفاده می کنیم اما در جاوا اسکریپت باید از ستاره * و / برای این عملیات استفاده کنیم.جدول بالا فقط عملگرهای پایه و اصلی ریاضی در جاوا اسکریپت هستند. در ادامه با عملگرهای پیچیده تر در محاسبات ریاضی آشنا خواهیم شد.
در کل، جاوا اسکریپت فاصله های اضافی را در نظر نمیکیرد بنابراین شما می توانید هر تعداد فاصله اضافی از جمله تب، فاصله و اینتر برای قالب بندی کد بگذارید. برای مثال لزومی ندارد در دو طرف اپراتور انتساب (=) فاصله بگذارید اما برای خوانایی بهتر کد بهتر است در دو طرف عملگر انتساب یک فاصله اضافی وارد کنیم. هر دو کد زیر برای مرورگر قابل فهم و بدون خطا است.
var formName='signup'; var formRegistration = 'newsletter' ;
در واقع شما می توانید هر تعداد و هر نوع فاصله ای که دوست دارید بین عبارت و دستورات قرار دهید، بنابراین هر دو دستور زیر یکسان هستند.
var formName = 'signup'; var formRegistration = 'newsletter';
البته اینکه هر تعداد فاصله میتوانید بگذارید بدین معنی نیست که باید بگذارید مثلا کد بالا خوانایی بسیار کمی دارد و باعث سردرگمی شما میشود.
شما میتوانید در عملیات ریاضی از متغیرها نیز استفاده کنید، متغیرها حاوی اطلاعاتی هستند که ما قبلا در آنها ذخیره کرده ایم و ممکن است به محتوای آنها در یک عملیات نیاز داشته باشیم. مثال های زیر را در نظر بگیرید.
var price = 10; var itemsOrdered = 15; var totalCost = price * itemsOrdered;
دو خط اول کد دو متغیر قیمت و تعداد آیتم ها را با مقادیر 10 و 15 تعریف می کند. خط سوم کد یک متغیربا نام totalCost تعریف می کند و محتوای آن را با یک عملیات ریاضی پر میکند، این عملیات نتیجه ضرب قیمت و تعداد ایتم ها را در متغیر جمع کل میریزد.این قطعه کد اهمیت متغیرها را در محاسبات و برنامه نویسی مشخص میکند شما از متغیر قیمت برای ذخیره قیمت استفاده کرده اید و بعدا از ان در محاسبه قیمت کل استفاده کرده اید. در ادامه به وفور از متغیرها و محاسبات استفاده خواهیم کرد.
اگر حین انجام محاسبات در برنامه نویسی چندین عملیات ریاضی را به طور همزمان انجام دهید – برای مثال ، اگر چند عدد را جمع و سپس همه آنها را در 10 ضرب کنید – باید ترتیب انجام محاسبات توسط مفسر جاوا اسکریپت را در نظر داشته باشید. برخی از عملگرها بر سایر عملگرها اولویت دارند ، بنابراین ابتدا محاسبه می شوندو اگر مراقب نباشید ممکن است عملیات محاسباتی شما منجر به نتایج ناخواسته شوند. این مثال را در نظر بگیرید.
4 + 5 * 10
ممکن است فکر کنید نتیجه این عملیات به سادگی قابل محاسبه است ابتدا 4+5 را انجام میدهید و سپس آن را در 10 ضرب می کنید و نتیجه آن 90 خواهد شد. اما اینگونه نیست در جاوا اسکریپت هر عملگری اولویت خاص خود را دارد و در یک عملیات عملگرهای با اولویت بالاتر ابتدا اجرا می شوند در عبارت بالا اولویت ضرب از جمع بیشتر است در نتیجه ابتدا نتیجه 5*10 محاسبه و سپس با 4 جمع می شود که نتیجه آن 54 است، در جاوا اسکریپت تقسیم و ضرب (/ و*) دارای تقدم بیشتری نسبت به جمع و تفریق (+ و -) هستند.
در مثال بالا برای اینکه مطمئن شوید که ابتدا حتما جمع انجام شود باید جمع دو عدد را مانند مثال زیر در داخل پرانتز قرار دهید.
(4 + 5) * 10
الحاق و ترکیب رشته ها یکی از کارهای معمول در برنامه نویسی است، برای مثال اگر در یک فرم نام و نام خانوادگی کاربر را از او دریافت کنید برای نمایش نام کامل کاربر به الحاق دو رشته نیاز دارید. حال اگر بخواهید پیغام مناسبی برای تشکر از تکمیل فرم نمایش دهید نیاز دارید که نام کامل او را با پیغام مناسب ترکیب کنید. برای مثال” John Smith, thanks for your order” .
به ترکیب رشته ها در برنامه نویسی concatenation یا همان الحاق گفته میشود و عملگر آن + است، این عملگر همان جمع اعداد است البته وقتی بین دو رشته قرار بگیرد بسیار متفاوت عمل می کند، مثال زیر را در نظر بگیرید:
var firstName = 'John'; var lastName = 'Smith'; var fullName = firstName + lastName;
در خط آخر کد محتوای متغیر firstName با محتوای متغیر lastName ترکیب یا الحاق شده است و نتیجه آن در متغیر fullName قرار داده میشود آنچه در این متغیر قرار داده میشود JohnSmith است و هیچ فاصله ای بین آنها نیست. برای افزودن یک فاصله بین آنها می توانید از روش زیر استفاده کنید.
var firstName = 'John'; var lastName = 'Smith'; var fullName = firstName + ' ' + lastName;
به یاد داشته باشید که متغیر می تواند هر نوع داده ای مانند عدد و رشته را در خود ذخیره کند، و وقتی که شما دو متغیر رشته ای مانند (firstName + lastName) را با هم ترکیب میکنید دقیقا مانند این است که ‘John’ + ‘Smith’ را الحاق کرده باشید.
بیشتر عملگرهای ریاضیاتی بر روی اعداد کار میکنند، برای مثال نمی توان عدد 2 را در رشته “eggs” ضرب کرد. اگر تلاش کنید عددی را در رشته ای ضرب کنید جاوا اسکریپت مقدار NaN – not a number- را برمیگرداند.
اما گاها نیاز پیدا میکنید که یک عدد را به رشته ای الحاق کنید مثلا میخواهید تعداد بازدیدهای کاربر از سایت را به همراه پیغام مناسب به او نشان دهید. در این حالت تعداد بازدید ها یک عدد و پیغام یک رشته است، برای این کا باز هم از عملگر + استفاده می کنیم این عملگر ابتدا عدد را به رشته تبدیل و سپس آن را با رشته مورد نظر ترکیب میکند. در واقع بعد از تبدیل 2 به ‘2’ تغییر می کند. مثال زیر را در نظر بگیرید
var numOfVisits = 101; var message = 'You have visited this site ' + numOfVisits + ' times.';
در این حالت پیغام خروجی “You have visited this site 101 times.” است. مفسر جاوا اسکریپت اپراتور + را نه به عنوان جمع بلکه به عنوان الحاق در نظر میگیرد. وقتی مفسر به عدد 101 می رسد ابتدا آن را به یک رشته مانند “101” تبدیل بعد آن را در عملیات الحاق دخالت میدهد. به این ویژگی در جاوا اسکریپت تبدیل خوکار نوع داده (automatic type conversion) میگویند.
دلیل اهمیت متغیرها در برنامه نویسی نگهداری مقادیر مختلف، تغیر در محتوای آنها و استفاده مجدد است، یرای مثال متغیر score که امتیاز بازیکن را در یک بازی در خود ذخیره می کند به مرور در طول بازی افزایش یا کاهش می یابد. حال یه سوال ساده: چگونه مقدار درون متغیر را تغییر دهیم؟ اگر بخواهیم یک مقدار مشخص را در متغیر قرار دهیم و محتوای آن را تغییر دهیم مانند مثال زیر یک مقدار جدید را با عملگر انتساب در آن قرار می دهیم.
var score = 0; score = 100;
اگر در برنامه نویسی معمول ما غالبا بجای قرار دادن مقدار جدید در متغیر ، بیشتر محتوای قبلی آن را تغییر میدهیم. برای نمونه در مثال بازی پیش گفته در طول بازی مقدار امتیاز کاربر افزایش و یا کاهش پیدا میکند، برای این کار (افزودن به مقدار موجود در متغیر) ما از نام خود متغیر مانند زیر استفاده میکنیم
var score = 0; score = score + 100;
خط آخر کد ممکن است کمی گیج کننده باشد اما باید بدانید که این روش یک روش معمول در برنامه نویسی است. برای درک بهتر آن را تشریح میکنیم : مفسر ابتدا سمت راست عملگر انتساب = را محاسبه میکند score + 100 که برای مفسر یعنی آنچه را که اکنون در متغیر score است (0) را با عدد 100 جمع کن که حاصل 100 می شود و در نهایت آن را در متغیر سمت راست یعنی همان score قرار می دهد.
برای سایر عملگرهای محاسباتی نیز از همین منطق استفاده می شود.
score = score - 10; score = score * 10; score = score / 10;
تغییر در مقدار متغیر با روش بالا یعنی استفاده از محتوای قبلی آن معمولا در برنامه نویسی زیاد انجام میشود و در زبان جاوا اسکریپت برای این کار تعدادی راه میانبر قراداده اند (جدول زیر) که انجام فرایند را بسیار ساده میکند.
عملگر | چه کاری انجام می دهد | نحوه استفاده | مانند |
---|---|---|---|
=+ | جمع | score += 10 | score = score + 10 |
=- | تفریق | score -= 10 | score = score – 10 |
=* | ضرب | score *= 10 | score = score * 10 |
=/ | تقسیم | score /= 10 | score = score / 10 |
++ | افزایش | score++ | score = score + 1 |
— | کاهش | score– | score = score – 1 |
برای الحاق رشته ها نیز میتوانید از همین روش استفاده کنید، برای مثال میخواهیم نام خانوادگی کاربر را به نام کوچک او که در یک متغیر ذخیره شده است اضافه کنیم.
var name = 'Franklin'; var message = 'Hello'; message = message + ' ' + name;
مانند استفاده از عملگرهای میانبر برای اعداد، می توان از میانبر برای الحاق رشته نیز استفاده کرد عملگر =+ رشته سمت راست خود را به متغیر سمت چپ الحاق می کند. ما از این عملگرها یه کرات در برنامه نویسی استفاده می کنیم.
message += ' ' + name;