اپراتورها، اکسپرشن ها و استیتمنت ها در زبان جاوا اسکریپت
اگر بلوک های سازنده ی یک ساختمان را آجرها تشکیل می دهند، پس بلوک های سازنده ی جاوا اسکریپت نیز Operators، Expressions و Statements خواهند بود. به کمک این بلوک ها، ما می توانیم مقادیر را دستکاری کرده و تغییر دهیم، عملیات ریاضیاتی انجام دهیم، دو یا چند مقدار را با هم مقایسه کنیم و خیلی از کارهای دیگر.
در این فصل با اپراتورها، اکسپرشن ها و استیتمنت ها آشنا می شویم و نحوه ی کار آن ها را بررسی می کنیم. همچنین خواهیم آموخت که چگونه می توانیم به بهترین شکل ممکن از این قابلیت های زبان برنامه نویسی جاوا اسکریپت استفاده کنیم تا به نتیجه ی دلخواه مان برسیم.
معرفی اکسپرشن
به هر تکه کدی که به یک مقدار منجر شود، Expression (اکسپرشن) می گویند (بهتر است که به دنبال معادل فارسی این اصطلاحات نگشته و آن ها را به صورت لاتین به خاطر بسپاریم.) اکسپرشن ها یا یک مقدار را به متغیر اختصاص می دهند یا آن که خودشان یک مقدار دارند. برای مثال، هر یک از خطوط زیر، یک اکسپرشن محسوب می شود:
1 + 1 a = 1;
اکسپرشن ها می توانند همانند نمونه های بالا، ساده و کوتاه باشند اما از طرفی دیگر، برخی اکسپرشن ها نیز می توانند بسیار پیچیده و طولانی باشند.
معرفی استیتمنت
Statement به بلوک های کدی در جاوا اسکریپت گفته می شود که کار خاصی را انجام می دهند؛ به طور مثال دستورات شرطی if و یا حلقه ها نمونه هایی از استیتمنت ها هستند. توجه داشته باشیم که یک استیتمنت می تواند حاوی چندین اکسپرشن باشد:
var x; var y; if (y >= 0) { x = y; } else { x = -y; }
بلوک کد فوق یک استیتمنت شرطی است که داخل آن از چندین اکسپرشن استفاده شده است.
ملاقات با اپراتور
موتوری که باعث می شود اکسپرشن ها به کار بیافتند و کار خود را انجام دهند، Operator (اپراتور یا عملگر) ها هستند. اپراتورها با انجام عملیات بر روی دیتای مختلف، نتایج و خروجی های مختلفی تولید می کنند. برای نمونه، علائم = و + در اکسپرشن های قبلی، اپراتور محسوب می شوند.
اولویت اپراتورها
یک اکسپرشن ساده، می تواند شامل چند اپراتور شود؛ مثال زیر را در نظر بگیرید:
var x = 100 + 50 * 3;
بسته به ترتیب عملیاتی که ما انجام می دهیم، خروجی نهایی می تواند یکی از این دو مورد باشد:
x = 450 x = 250
در اینجا می توان ابتدا 50 را در 3 ضرب کرد، جوابش را با 100 جمع کرد یا این که می توان ابتدا 100 را با 50 جمع کرده سپس حاصلجمع آن ها را در عدد ۳ ضرب کرد. اما اگر این طور پیش برویم، هر بار با جوابی متفاوت رو به رو می شویم، پس حتماً می بایست روشی برای تعیین جواب استاندارد و صحیح وجود داشته باشد و خبر خوب این که دقیقاً نیز همین طور است.
به عبارت دیگر، جواب صحیح این معادله برابر با 250 است اما از کجا باید این را فهمید؟ همان طور که در ریاضیات، برخی محاسبات و عملگرها نسبت به دیگر موارد اولویت دارند، در زبان جاوا اسکریپت نیز برخی اپراتورها نسبت به سایرین اولویت دارند و می بایست ابتدا محاسبات آن ها را انجام داد. در واقع، اولویت ضرب و تقسیم بیشتر از جمع و تفریق است. اما اگر بخواهیم از این اصول پیروی نکنیم چه طور؟
var x = (100 + 50) * 3;
همان طور که در مثال فوق می بینیم، با قرار دادن دستورات مد نظر داخل پرانتز، می توانیم اولویت آن ها را بالاتر ببریم که در این صورت خروجی اکسپرشن بالا برابر با عدد ۴۵۰ خواهد بود.
زمان هایی هم در کدنویسی برایمان پیش خواهد آمد که با اپراتورهایی مواجه می شویم که از اولویت یکسانی برخوردارند. برای مثال، اکسپرشن زیر را می توان در نظر گرفت:
var x = 100 + 50 - 3;
در چنین مواقعی، از آن جا که اولویت علائم + و – برابر است، لذا محاسبه از سمت چپ به راست صورت می گیرد. به عبارت دیگر، در مثال بالا ابتدا عدد ۱۰۰ با ۵۰ جمع شده، سپس عدد ۳ از حاصلجمع آن ها کسر می شود که در نتیجه عدد 147 به دست خواهد آمد.