الشروط في JavaScript: if و else
حتى الآن كانت برامجنا تنفّذ كل الأسطر بالترتيب، من الأول إلى الأخير. لكن البرامج الحقيقية تحتاج إلى اتخاذ قرارات: إذا كانت كلمة المرور صحيحة فافتح الحساب، وإلا فاعرض رسالة خطأ. في هذا الدرس ستتعلم كيف تجعل برنامجك يفكر ويختار باستخدام if و else.
الشرط if
Section titled “الشرط if”الكلمة if تعني «إذا». تكتب بعدها شرطاً بين قوسين، ثم الكود الذي يُنفّذ فقط إذا كان الشرط صحيحاً بين قوسين معقوفين:
let age = 20;
if (age >= 18) { console.log("يمكنك استخراج رخصة القيادة");}يمكنك استخراج رخصة القيادةالشرط age >= 18 قيمته true، فنُفّذ الكود. ولو كانت قيمة age تساوي 16 لما ظهر أي شيء.
الأمر يشبه إشارة المرور: إذا كانت خضراء، تعبر. الشرط هو لون الإشارة، والكود داخل القوسين المعقوفين هو العبور.
else: وإلا…
Section titled “else: وإلا…”ماذا لو أردت أن تفعل شيئاً آخر عندما يكون الشرط خاطئاً؟ استخدم else التي تعني «وإلا»:
let age = 16;
if (age >= 18) { console.log("يمكنك استخراج رخصة القيادة");} else { console.log("انتظر حتى تبلغ 18 عاماً");}انتظر حتى تبلغ 18 عاماًالآن البرنامج أمام طريقين، ويسلك واحداً فقط منهما دائماً، لا الاثنين معاً ولا أي منهما.
else if: أكثر من احتمالين
Section titled “else if: أكثر من احتمالين”الحياة ليست دائماً «نعم أو لا». عندما يكون عندك عدة احتمالات، أضف else if بينها:
let score = 83;
if (score >= 90) { console.log("ممتاز");} else if (score >= 80) { console.log("جيد جداً");} else if (score >= 65) { console.log("جيد");} else if (score >= 50) { console.log("مقبول");} else { console.log("راسب");}جيد جداًJavaScript تفحص الشروط من الأعلى إلى الأسفل، وتتوقف عند أول شرط صحيح فتنفّذه، وتتجاهل الباقي. الدرجة 83 ليست أكبر من أو تساوي 90، لكنها أكبر من أو تساوي 80، فكانت النتيجة «جيد جداً». وإذا لم يتحقق أي شرط، يُنفّذ ما في else الأخيرة.
دمج الشروط: العمليات المنطقية
Section titled “دمج الشروط: العمليات المنطقية”أحياناً يعتمد القرار على أكثر من شرط. هنا تستخدم ثلاث عمليات منطقية:
| العملية | الرمز | المعنى |
|---|---|---|
| و (AND) | && |
الشرطان صحيحان معاً |
| أو (OR) | || |
واحد منهما على الأقل صحيح |
| ليس (NOT) | ! |
يعكس القيمة |
let hasTicket = true;let age = 15;if (hasTicket && age >= 12) { console.log("تفضل بالدخول");}
let day = "الجمعة";if (day === "الجمعة" || day === "السبت") { console.log("اليوم إجازة");}
let isRaining = false;if (!isRaining) { console.log("الجو جميل، اخرج والعب");}تفضل بالدخولاليوم إجازةالجو جميل، اخرج والعب- مع
&&: لدخول السينما تحتاج تذكرة و عمراً مناسباً. إذا غاب أحدهما، لا دخول. - مع
||: يكفي أن يكون اليوم جمعة أو سبتاً ليكون إجازة. - مع
!: إذا كان المطرfalse، فإن!isRainingتصبحtrue.
القيم الصحيحة والخاطئة (Truthy و Falsy)
Section titled “القيم الصحيحة والخاطئة (Truthy و Falsy)”الشرط لا يجب أن يكون مقارنة دائماً. يمكنك وضع أي قيمة، وJavaScript تعاملها كأنها true أو false. هذه القيم الست فقط تُعتبر خاطئة (Falsy):
false و 0 و "" (نص فارغ) و null و undefined و NaN.
وكل شيء آخر يُعتبر صحيحاً (Truthy)، حتى النص "0" والنص الذي فيه مسافة واحدة!
let username = "";
if (username) { console.log(`أهلاً ${username}`);} else { console.log("من فضلك اكتب اسمك");}من فضلك اكتب اسمكالنص الفارغ قيمة خاطئة، فنُفّذ ما في else. هذه طريقة مختصرة وشائعة لفحص «هل كتب المستخدم شيئاً؟».
جرّب بنفسك
Section titled “جرّب بنفسك”هذا برنامج ينصحك حسب درجة الحرارة. غيّر قيمة temperature إلى 25 ثم 10، وشاهد كيف يتغير القرار. ثم حاول أن تضيف شرطاً جديداً لدرجة حرارة أعلى من 40:
الناتج
أخطاء شائعة
Section titled “أخطاء شائعة”- استخدام = بدلاً من ===: الشرط
if (age = 18)لا يقارن، بل يضع القيمة 18 في المتغير! والقيمة 18 صحيحة، فيُنفّذ الكود دائماً ويتغير عمرك دون أن تشعر. استخدم===للمقارنة. - فاصلة منقوطة بعد الشرط:
if (age >= 18);تنهي الشرط فوراً، فيُنفّذ الكود الذي بعدها دائماً. لا تضع;بعد قوس الشرط. - ترتيب else if الخاطئ: ابدأ بالشرط الأضيق كما رأيت في مثال الدرجات.
اختبر نفسك
Section titled “اختبر نفسك”سؤال
إذا كانت score = 70، ماذا يطبع الكود في مثال الدرجات؟
70 ليست ≥ 90 ولا ≥ 80، لكنها ≥ 65، فيتوقف البحث عند «جيد».
سؤال
ما قيمة true && false؟
العملية && تحتاج أن يكون الطرفان صحيحين معاً، وهنا أحدهما خاطئ.
الخلاصة
Section titled “الخلاصة”ifتنفّذ الكود فقط إذا كان الشرط صحيحاً، وelseتنفّذ البديل.else ifلعدة احتمالات، وJavaScript تتوقف عند أول شرط صحيح، فالترتيب مهم.&&تعني «و»، و||تعني «أو»، و!تعكس القيمة.- القيم الخاطئة ست:
falseو0و""وnullوundefinedوNaN، وكل ما عداها صحيح. - قارن بـ
===وليس بـ=، ولا تضع فاصلة منقوطة بعد قوس الشرط.