جاوااسکریپتمقدماتی۵ دقیقه مطالعهECMAScript 2023+

شرط‌ها و تصمیم‌گیری

گرفتن تصمیم در برنامه با if و else، انتخاب‌های چندگانه با else if و switch و شرط کوتاه با عملگر سه‌تایی.

آنچه در این درس می‌آموزید

  • با if و else مسیر اجرای برنامه را بر پایهٔ شرط تغییر دهید
  • حالت‌های چندگانه را با else if و switch مدیریت کنید
  • شرط‌های کوتاه را با عملگر سه‌تایی بنویسید
نویسنده: تیم داکنامه · بازبینی: ۲۰۲۶-۱۰-۳۰
فهرست مطالب

تا اینجا برنامه‌های ما خط‌به‌خط از بالا به پایین اجرا می‌شدند. برنامه‌های واقعی اما باید تصمیم بگیرند: اگر کاربر وارد شده باشد این مسیر، وگرنه مسیر دیگر. اینجاست که شرط‌ها وارد می‌شوند. یک شرط یک عبارت بولی است — چیزهایی که با === و && و || ساختید — و بر پایهٔ درست یا نادرست بودنش، مسیر اجرای برنامه عوض می‌شود.

if و else

ساده‌ترین شکل تصمیم‌گیری دو مسیره است:

grade.js
const score = 14;

if (score >= 10) {
  console.log("You passed");
} else {
  console.log("You failed");
}
خروجی کد

You passed

شرط داخل پرانتز بررسی می‌شود؛ اگر true باشد بلوک اول (بین آکولادها) اجرا می‌شود و اگر false باشد بلوک else. فقط یکی از دو بلوک هر بار اجرا می‌شود.

انتخاب از میان چند مسیر با else if

وقتی بیش از دو حالت دارید، شرط‌ها را زنجیر می‌کنیم:

weather.js
const temperature = 12;

if (temperature >= 30) {
  console.log("It is hot");
} else if (temperature >= 15) {
  console.log("It is mild");
} else {
  console.log("It is cold");
}
خروجی کد

It is cold

شرط‌ها از بالا به پایین بررسی می‌شوند و اولین شرط درست برنده می‌شود؛ بقیه حتی بررسی نمی‌شوند. برای همین ترتیب مهم است: چون 12 >= 30 نادرست و 12 >= 15 هم نادرست بود، بلوک else اجرا شد.

عملگر سه‌تایی

برای انتخاب دوگانهٔ کوتاه — به‌خصوص وقتی می‌خواهید مقداری را انتخاب کنید نه دستور اجرا کنید — عملگر سه‌تایی (Ternary Operator) کد را فشرده‌تر می‌کند:

ternary.js
const age = 16;
const ticket = age < 18 ? "Half price" : "Full price";

console.log(ticket);
خروجی کد

Half price

ساختار آن شرط ? مقدار اگر درست : مقدار اگر نادرست است. همین کد با if و else هم نوشتنی بود، اما وقتی فقط یک مقدار انتخاب می‌شود، شکل سه‌تایی روان‌تر است. برای منطق پیچیده سراغش نروید؛ خوانایی مهم‌تر از کوتاهی است.

switch؛ وقتی یک مقدار چند چهره دارد

اگر قرار است یک مقدار را با چند حالت مشخص مقایسه کنید، switch تمیزتر از زنجیرهٔ طولانی else if است:

switch.js
const day = "Saturday";

switch (day) {
  case "Saturday":
  case "Sunday":
    console.log("Workday");
    break;
  case "Friday":
    console.log("Day off");
    break;
  default:
    console.log("Unknown");
}
خروجی کد

Workday

switch مقدار day را با هر case مقایسه می‌کند (با همان برابری سخت‌گیرانهٔ ===) و از اولین برابری شروع به اجرا می‌کند. دو نکته در این مثال:

  1. دو case پشت سر هم یعنی برای «شنبه» و «یکشنبه» یک نتیجه؛ این رفتار به آن می‌گوید به پایین ادامه بده.
  2. break اجرا را همان‌جا قطع می‌کند. اگر break نگذارید، اجرا به caseهای بعدی سرریز می‌شود و نتایج ناخواسته چاپ می‌شوند؛ این رایج‌ترین خطای switch است.

مقادیر درست و نادرست

شرط داخل if لازم نیست حتماً بولی باشد. جاوااسکریپت هر مقداری را به بولی تبدیل می‌کند؛ به مقدارهایی که false حساب می‌شوند «falsy» می‌گویند: false، عدد 0، رشتهٔ خالی ""، null، undefined و NaN. همهٔ مقادیر دیگر «truthy» هستند. برای مثال if (userName) یعنی «اگر نام کاربر خالی نباشد».

تمرین‌ها

تمرین

تمرین ۱ — ارزشیابی نمره

متغیری به نام score با مقدار ۱۸ بسازید. اگر نمره دست‌کم ۱۷ بود «عالی»، اگر دست‌کم ۱۲ بود «قابل قبول» و در غیر این صورت «نیاز به تلاش بیشتر» چاپ کنید.

js
// Write your code here
نمایش راه‌حل
js
const score = 18;
if (score >= 17) {
  console.log("Excellent");
} else if (score >= 12) {
  console.log("Acceptable");
} else {
  console.log("Needs more effort");
}
خروجی کد

Excellent

::: :::

خلاصه

  • if و else مسیر اجرای برنامه را بر پایهٔ یک عبارت بولی عوض می‌کنند.
  • با else if چند حالت را به ترتیب بررسی می‌کنید؛ اولین شرط درست اجرا می‌شود.
  • عملگر سه‌تایی شرط ? x : y برای انتخاب کوتاه بین دو مقدار است.
  • switch برای مقایسهٔ یک مقدار با چند حالت مشخص است و بدون break به پایین سرریز می‌شود.
  • هر مقداری در شرط به بولی تبدیل می‌شود؛ مقادیر falsy مثل 0 و "" و null مثل false رفتار می‌کنند.

تصمیم‌گیری داریم؛ حالا نوبت تکرار است. در درس بعدی با حلقه‌ها یاد می‌گیریم کارهای تکراری را به کامپیوتر بسپاریم.

منابع و ارجاع‌ها

درس‌های مرتبط