کدهای زبان جاوا اسکریپت به صورت خطبهخط اجرا میشوند ولی گاهی بهعنوان برنامهنویس میخواهیم کدهایی بنویسیم که همیشه اجرا نشوند و تنها در شرایط خاصی این اتفاق بیفتد.
برای مثال تصور کنید که میخواهید برنامهای بنویسید تا درصورتی که نمرهی یک دانشجو کمتر از ۱۰ باشد برای او پیغامی نمایش داده شود و او مطلع شود که نمرهی قبولی این درس را نگرفته است.
با درنظر گرفتن مثال بالا، کد مربوط به نمایش پیغام به دانشجو همیشه نباید اجرا شود و تنها زمانی باید آن کد اجرا شود که دانشجو نمرهی قبولی درس موردنظر را نگرفته باشد.
یک برنامهنویس مثال بالا را برای خود با این جمله توصیف میکند : «اگر نمره کمتر از ۱۰ بود پیغام را نمایش میدهم».
پس ما برای حل مثال بالا به یک ساختار شرطی نیازی داریم. ساختاری که بخشی از کدهای ما را در شرایط خاصی اجرا کند.
این ساختار را در زبان جاوا اسکریپت با دستور if میتوانیم بنویسیم. به کد زیر توجه کنید:
let score = 8;
if( score < 10){
console.log("شما پاس نشدید");
}شما پاس نشدیددر کد بالا ابتدا متغیری با نام score تعریف کردیم و فرض کردیم نمرهی دانشجو در این متغیر قرار دارد و برای همین منظور عدد 8 را هم در این متغیر ذخیره کردیم. سپس با دستور if بررسی کردیم که آیا محتوای داخل این متغیر کوچکتر از عدد ۱۰ است یا نه؟
درصورتی که محتوای score کوچکتر از عدد ۱۰ باشد پیغام «شما پاس نشدید» در کنسول به کاربر نمایش داده میشود.
با نوشتن علامتهای آکولاد باز و بسته محدودهی کدهای مشروط خود را مشخص میکنیم ولی استفاده از علامتهای آکولاد در شرایطی اختیاری است. اگر فقط یک خط کد داخل بخش if نوشته بودید، نیازی به استفاده از علامتهای آکولاد ندارید و استفاده از آنها کاملا اختیاری میشود، ولی اگر بیش از یک خط بین دو آکولاد داشتید، دیگر نمیتوانید آکولادها را حذف کنید چون هنگام اجرای برنامه جاوا اسکریپت بهصورت پیشفرض اولین خط نوشتهشده را به عنوان بدنهی ساختار if انتخاب میکند و بقیهی کدهای شما در هر شرایطی اجرا خواهند شد چرا که از نگاه جاوا اسکریپت آنها بیرون شرط if قرار دارند. به مثال زیر توجه کنید :
let a = 17;
if(a == 15)
console.log('عدد وارد شده ۱۵ است');
console.log('عدد ۱۵ را وارد کردهاید');عدد ۱۵ را وارد کردهایدهمانطور که در کد بالا مشاهده کردید، حذف علامتهای آکولاد باعث شد تا جاوا اسکریپت فقط اولین log را به عنوان بخش داخلی if انتخاب کند و log دوم چون بیرون از ساختار if تصور شده است، پس در هر شرایطی اجرا میشود، حتی اگر شرط غلط باشد.
در مثال قبلی، تصورکنید که میخواهیم اگر دانشجو نمرهی قبولی را دریافت کردهبود، به او یک پیام تبریک نمایش دهیم. با دانستههای قبلی خود اگر پس از دستور if پیام تبریک را قرار دهیم، دانشجوی موردنظر چه نمرهی قبول را گرفته باشد و چه نگرفته باشد، پیام تبریک به اون نمایش داده خواهدشد.
برای جلوگیری از این اتفاق، از دستور else استفاده میکنیم. واژهی else در زبان فارسی به معنی «درغیراینصورت» است و ما هم برای همینمنظور میخواهیم از این دستور استفاده کنیم. به کد زیر توجه کنید:
let score = 12;
if(score < 10){
console.log("شما پاس نشدید");
}else{
console.log("تبریک میگویم شما پاس شدید");
}تبریک میگویم شما پاس شدیدکد بالا پس از اجرا شدن پیام «تبریک میگویم شما پاس شدید» را به کاربر نمایش میدهد.
اکنون اگر نمرهی کمتر از عدد ۱۰ را در متغیر score ذخیره کنیم، فقط پیام «شما پاس نشدید» به کاربر نمایش داده میشود. به کد زیر توجه کنید:
let score = 7;
if(score < 10){
console.log("شما پاس نشدید");
}else{
console.log("تبریک میگویم شما پاس شدید");
}شما پاس نشدیدبله، همانطور که میتوانستیم آکولادهای دستور if را ننویسیم، میتوانیم آکولادهای مربوط به else را هم ننویسیم. فقط دوباره یادآوری میکنیم که اگر چندین خط کد برای بخش else نوشتهاید نمیتوانید آکولادهای را حذف کنید چون در این حالت جاوا اسکریپت بهصورت پیشفرض تصور میکند که تنها اولین خط برای ساختار else است و بقیهی کدها را خارج از else تصور میکند.
تا به اینجای کار ما یاد گرفتهایم که یک دوراهی در کدهای خودمان ایجاد کنیم که برای مثال «اگر فلان شرط درست بود، این کدها اجرا شوند و در غیراینصورت کدهای دیگری اجرا شوند»، ولی بخواهیم شرایط دیگری را هم بسنجیم و راههای دیگری هم ایجاد کنیم چطور؟ آیا با دانستههای فعلی میتوانیم چنین کاری انجام دهیم؟
دستور else if برای همین منظور استفاده میشود و معنی فارسی این دستور، عبارت «درغیراینصورت اگر» است که با استفاده از این دستور میتوانیم در یک ساختار شرطی، بیش از دو حالت را بررسی کنیم. برای مثال تصور کنید عددی از کاربر دریافت کردهایم و اکنون میخواهیم بررسی کنیم که آیا این عدد مثبت است، منفی است و یا صفر است. همانطور که مشخص است، شرطی باید بنویسیم که سه حالت را بررسی کند (مثبت بودن، منفی بودن، صفر بودن) و در هر یک از حالتها پیام مناسبی را به کاربر نمایش دهد. برای نوشتن و حل مسئلهی بالا از دستور else if استفاده خواهیم کرد. به کد زیر توجه کنید :
let number = 5;
if(number > 0){
console.log("it is positive"); // مثبت است
}else if(number < 0){
console.log("it is negative"); // منفی است
}else{
console.log("it is zero"); // صفر است
}it is positiveبرای درک بهتر کدهای مثال بالا و پاسخ دادن به سوالات احتمالی در ذهن شما، به نکات زیر توجه کنید:
بله، با درنظر گرفتن قوانین مربوط به نحوهی ایجاد یک ساختار شرطی میتوانیم این کار را انجام دهیم. به مثال زیر دقت کنید:
let x = -5;
if(x > 0){
if(x%2 == 0){
console.log("x is positive and even"); // مثبت و زوج است
}else{
console.log("x is positive and odd"); // مثبت و فرد است
}
}else if(x < 0){
if(x%2 == 0){
console.log("x is negative and even"); // منفی و زوج است
}else{
console.log("x is negative and odd"); // منفی و فرد است
}
}else{
console.log("x is zero"); // صفر است
}x is negative and odd