در حال بارگذاری...

شرط if و else

عملگر منطقی فقط بله/خیر ساخت. سؤال بعدی این است: کدام خطوط باید اجرا شوند؟ اگر جواب بله بود یک بلوک، اگر خیر بود بلوک دیگر. همین انتخاب را با if / else / else if می‌نویسید. ساختن boolean را بلدید؛ اینجا با همان جواب مسیر را برمی‌گزینید.

if چه می‌کند؟

if شرط داخل پرانتز را می‌بیند. اگر آن مقدار truthy باشد، بلوک داخل { } بلافاصله بعدش اجرا می‌شود. اگر falsy باشد آن بلوک رد می‌شود. else مسیر پشتیبان است وقتی if رد شد. else if قبل از else نهایی یک چک دیگر اضافه می‌کند.

نگاه سریع به کلیدواژه‌ها

📊 قطعه‌های روزمرهٔ if / else

کلیدواژه خواندن روزمره کاربرد معمول
if اگر این قبول شد، این بلوک را اجرا کن چک اول
else if وگرنه، اگر این چک دیگر قبول شد… مسیرهای میانی
else در غیر این صورت همین را اجرا کن مسیر آخر

شرط را شفاف نگه دارید: مقایسه (age >= 18)، وصل منطقی (age >= 18 && score >= 60)، یا متغیر boolean روشن. کار همان مسیر را داخل { … } بنویسید.

if ساده

javascript
let age = 20;
if (age >= 18) {
console.log("adult");
}
console.log("done");

if فقط وقتی چک قبول است اجرا می‌شود

اینجا age برابر 20 است؛ پس age >= 18 می‌شود true و کنسول اول adult و بعد done را می‌دهد. اگر age را 16 کنید فقط done می‌ماند — بلوک if رد شده است.

خط بعد از } بسته معمولاً همیشه اجرا می‌شود (مگر بعداً از تابع بیرون بروید). if کل برنامه را متوقف نمی‌کند؛ فقط تصمیم می‌گیرد بلوک خودش بیاید یا نه.

if با else

javascript
let age = 16;
if (age >= 18) {
console.log("adult");
} else {
console.log("under 18");
}

else مسیر دیگر را پوشش می‌دهد

این‌بار چک رد می‌شود؛ JavaScript بلوک اول را رد می‌کند و else را اجرا می‌کند. خروجی under 18 است. در جفت سادهٔ if / else دقیقاً یکی از دو شاخه می‌آید — نه هر دو، نه هیچ‌کدام.

زنجیرهٔ else if

javascript
let score = 75;
if (score >= 90) {
console.log("A");
} else if (score >= 60) {
console.log("pass");
} else {
console.log("retry");
}

else if مسیر میانی می‌سازد

score برابر 75 است. چک اول (>= 90) رد می‌شود. دومی (>= 60) قبول است؛ پس pass را می‌بینید و else آخر اجرا نمی‌شود. ترتیب مهم است: وقتی بازه‌ها هم‌پوشانی دارند، شرط سخت‌تر را اول بگذارید.

اگر به‌جایش سه if جدا بنویسید، ممکن است بیش از یک بلوک اجرا شود. else if مسیرها را انحصاری نگه می‌دارد — بعد از اولین تطبیق، زنجیره می‌ایستد.

شرط از مقایسه و منطق

javascript
let age = 20;
let score = 75;
if (age >= 18 && score >= 60) {
console.log("allowed");
} else {
console.log("blocked");
}
let ready = false;
if (!ready) {
console.log("wait");
}

داخل پرانتز چک واقعی بگذارید

شرط می‌تواند مقایسه، عبارت منطقی، یا boolean برعکس‌شده باشد. age >= 18 && score >= 60 برابر true است؛ پس allowed را می‌بینید. !ready هم true است؛ پس wait هم چاپ می‌شود. اول بله/خیر را بسازید؛ بعد بگذارید if شاخه را انتخاب کند.

ذخیرهٔ پیام شاخه

javascript
let age = 20;
let label;
if (age >= 18) {
label = "adult";
} else {
label = "under 18";
}
console.log(label);

نتیجهٔ شاخه را نام‌گذاری کنید

گاهی به‌جای فقط console.log یک رشته (یا عدد) از انتخاب می‌خواهید. داخل هر شاخه label را مقدار بدهید و بعد یک‌بار استفاده کنید. اینجا label می‌شود "adult".

مسیر انتخاب‌شده را روی صفحه نشان دهید

با if / else پیام کوتاه بسازید، بعد روی صفحه بنویسید.

شاخهٔ صفحه با if else

html
<!DOCTYPE html>
<html>
<head>
<title>If else — page branch</title>
</head>
<body>
<p id="out">…</p>
<script>
let age = 20;
let msg;
if (age >= 18) {
msg = "adult";
} else {
msg = "under 18";
}
let box = document.getElementById("out");
box.textContent = "status=" + msg;
</script>
</body>
</html>

age برابر 20 است؛ صفحه status=adult را نشان می‌دهد. age را 16 کنید، رفرش کنید؛ باید status=under 18 ببینید. جلسهٔ بعد (switch) راه دیگری برای چند مقدار ثابت است؛ برای دروازهٔ بله/خیر روزمره همان if / else ابزار اصلی می‌ماند.

خودتان امتحان کنید

  1. داخل if (true) عبارت "ok" را لاگ کنید و ببینید چاپ می‌شود.
  2. با let age = 16 یک if / else بنویسید و "adult" یا "under 18" چاپ کنید.
  3. برای بازه‌های score زنجیرهٔ else if بسازید: A (≥ ۹۰)، pass (≥ ۶۰)، وگرنه retry.
  4. شرط age >= 18 && score >= 60 را در یک if بگذارید.
  5. از if / else یک رشتهٔ label بسازید و یک‌بار لاگ کنید.
  6. در دموی HTML فقط age را عوض کنید، رفرش کنید، متن تازهٔ status= را بخوانید.

اشتباه‌های رایج

  • فراموش کردن آکولاد { } دور بدنۀ شاخه
  • نوشتن if (age = 18) با یک = (مقداردهی) به‌جای مقایسه
  • گذاشتن else بدون if منطبق بالای آن
  • چند if جدا وقتی منظورتان مسیرهای انحصاری else if بوده
  • چک کردن بازه‌های شل با ترتیب غلط (مثلاً >= 60 قبل از >= 90)

خلاصه

  • if وقتی شرط truthy است بلوک را اجرا می‌کند
  • else وقتی همان if رد شد اجرا می‌شود
  • else if مسیرهای میانی انحصاری اضافه می‌کند
  • شرط معمولاً مقایسه یا عبارت منطقی است
  • هر شاخه را داخل آکولاد نگه دارید؛ اگر بعداً نتیجه لازم است در متغیر ذخیره کنید
  • بعدی: دستور switch — انتخاب بین چند مقدار ثابت

🧠 دانش خود را بیازمایید

آماده شروع

دانش خود را بیازمایید

خود را با این آزمون تعاملی به چالش بکشید و ببینید موضوع را چقدر خوب درک کرده‌اید

❓
8
سوالات
🎯
70%
برای قبولی
♾️
∞
زمان
🔄
∞
تلاش‌ها

📝 دستورالعمل‌ها

  • هر سوال را با دقت بخوانید
  • بهترین پاسخ را برای هر سوال انتخاب کنید
  • می‌توانید آزمون را هر چند بار که می‌خواهید تکرار کنید
  • پیشرفت شما در بالا نمایش داده می‌شود