یکی از روشهای رایج برای اجرای شرطی منطق در JavaScript، دستور شرطی if است.
این دستور از کلیدواژهی if، یک شرط که داخل پرانتز قرار میگیرد و یک «بلوک کد» که داخل آکولاد قرار میگیرد تشکیل شده است.
بلوک کد تنها زمانی اجرا میشود که شرط به true ارزیابی شود.
if (condition) {
// code that is executed if "condition" is true
}
میتوان از آن بهتنهایی استفاده کرد یا آن را با کلیدواژهی else ترکیب کرد.
if (condition) {
// code that is executed if "condition" is true
} else {
// code that is executed otherwise
}
برای اینکه شرطی دیگر را بهصورت تودرتو در دستور else قرار دهید، میتوانید از else if استفاده کنید.
توجه کنید که در JavaScript کلیدواژهی elseif وجود ندارد.
در عوض، else را بنویسید و پس از آن یک دستور if دیگر بیاورید.
if (condition1) {
// code that is executed if "condition1" is true
} else if (condition2) {
// code that is executed if "condition2" is true
// but "condition1" was false
} else {
// code that is executed otherwise
}
بهلحاظ نظری، میتوانید هر تعداد شرط دیگر را که بخواهید تودرتو کنید.
اما در عمل، در چنین مواردی بهجای آن از یک دستور switch استفاده میکنید.
if (condition1) {
// ...
} else if (condition2) {
// ...
} else if (condition3) {
// ...
} else if (condition4) {
// ...
} else {
// ...
}
هنگام ساختن شرطهای پیچیده، برای پرهیز از پرانتزهای غیرضروری به جدول تقدم عملگرها مراجعه کنید.
if (num >= 0 && num < 1) {
// ...
}
// The inner brackets are obsolete because relational operators
// have higher precedence than logical operators.
<!-- prettier-ignore-start -->
if ((num >= 0) && (num < 1)) {
// ...
}
<!-- prettier-ignore-end -->
همچنین در نظر بگیرید که از متغیرهای اضافی استفاده کنید تا کد خواناتر شود.
const isPositive = num >= 0;
const isSmall = num < 1;
if (isPositive && isSmall) {
// ...
}
در JavaScript، شرط لازم نیست از نوع «منطقی» باشد.
اگر در بستری منطقی مانند دستور if نوعی غیر از منطقی داده شود، JavaScript مقدار را بهصورت ضمنی به منطقی تبدیل میکند.
برای جزئیات اینکه کدام مقادیر بهترتیب truthy و falsy هستند، به مفهوم تبدیل نوع مراجعه کنید.
const num = 4;
if (num) {
// this code block will be executed because 4 is truthy
}
اگر میخواهید فقط یک دستور را در بلوک کد if یا else اجرا کنید، در JavaScript میتوانید آکولادها را حذف کنید.
if (condition) doSomething();
// or
if (condition)
doSomething();
برای نمونه، این کار گاهی هنگام بررسی یک شرط خطا استفاده میشود. بهطور کلی توصیه نمیشود، چون وقتی دستور دومی را اضافه میکنید که باید به همان شرط وابسته باشد، فراموش کردن بازگرداندن آکولادها آسان است.
هنگام نوشتن توابع، الگوی رایجی است که بلوک else را حذف کنید و بهجای آن از یک return زودهنگام در بلوک if استفاده کنید.
در بسیاری از موارد، این کار تودرتویی را کاهش میدهد و کد را خواناتر و پیگیری آن را آسانتر میکند.
function checkNumber(num) {
let message = '';
if (num === 0) {
message = 'You passed 0, please provide another number.';
} else {
message = 'Thanks for passing such a nice number.';
}
return message;
}
// Can also be written as ...
function checkNumber(num) {
if (num === 0) {
return 'You passed 0, please provide another number.';
}
return 'Thanks for passing such a nice number.';
}