شرط 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 روشن. کار همان مسیر را داخل { … } بنویسید.
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 کل برنامه را متوقف نمیکند؛ فقط تصمیم میگیرد بلوک خودش بیاید یا نه.
let age = 16;
if (age >= 18) {
console.log("adult");
} else {
console.log("under 18");
}
else مسیر دیگر را پوشش میدهد
اینبار چک رد میشود؛ JavaScript بلوک اول را رد میکند و else را اجرا میکند. خروجی under 18 است. در جفت سادهٔ if / else دقیقاً یکی از دو شاخه میآید — نه هر دو، نه هیچکدام.
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 مسیرها را انحصاری نگه میدارد — بعد از اولین تطبیق، زنجیره میایستد.
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 شاخه را انتخاب کند.
let age = 20;
let label;
if (age >= 18) {
label = "adult";
} else {
label = "under 18";
}
console.log(label);
نتیجهٔ شاخه را نامگذاری کنید
گاهی بهجای فقط console.log یک رشته (یا عدد) از انتخاب میخواهید. داخل هر شاخه label را مقدار بدهید و بعد یکبار استفاده کنید. اینجا label میشود "adult".
مسیر انتخابشده را روی صفحه نشان دهید
با if / else پیام کوتاه بسازید، بعد روی صفحه بنویسید.
<!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 ابزار اصلی میماند.
خودتان امتحان کنید
- داخل
if (true)عبارت"ok"را لاگ کنید و ببینید چاپ میشود. - با
let age = 16یکif/elseبنویسید و"adult"یا"under 18"چاپ کنید. - برای بازههای
scoreزنجیرهٔelse ifبسازید:A(≥ ۹۰)،pass(≥ ۶۰)، وگرنهretry. - شرط
age >= 18 && score >= 60را در یکifبگذارید. - از
if/elseیک رشتهٔlabelبسازید و یکبار لاگ کنید. - در دموی HTML فقط
ageرا عوض کنید، رفرش کنید، متن تازهٔstatus=را بخوانید.
اشتباههای رایج
- فراموش کردن آکولاد
{ }دور بدنۀ شاخه - نوشتن
if (age = 18)با یک=(مقداردهی) بهجای مقایسه - گذاشتن
elseبدونifمنطبق بالای آن - چند
ifجدا وقتی منظورتان مسیرهای انحصاریelse ifبوده - چک کردن بازههای شل با ترتیب غلط (مثلاً
>= 60قبل از>= 90)
خلاصه
ifوقتی شرط truthy است بلوک را اجرا میکندelseوقتی همانifرد شد اجرا میشودelse ifمسیرهای میانی انحصاری اضافه میکند- شرط معمولاً مقایسه یا عبارت منطقی است
- هر شاخه را داخل آکولاد نگه دارید؛ اگر بعداً نتیجه لازم است در متغیر ذخیره کنید
- بعدی: دستور switch — انتخاب بین چند مقدار ثابت
🧠 دانش خود را بیازمایید
دانش خود را بیازمایید
خود را با این آزمون تعاملی به چالش بکشید و ببینید موضوع را چقدر خوب درک کردهاید
📝 دستورالعملها
- هر سوال را با دقت بخوانید
- بهترین پاسخ را برای هر سوال انتخاب کنید
- میتوانید آزمون را هر چند بار که میخواهید تکرار کنید
- پیشرفت شما در بالا نمایش داده میشود