تخطَّ إلى المحتوى

الشروط في JavaScript: if و else

الدرس 8 من 28 · JavaScript

حتى الآن كانت برامجنا تنفّذ كل الأسطر بالترتيب، من الأول إلى الأخير. لكن البرامج الحقيقية تحتاج إلى اتخاذ قرارات: إذا كانت كلمة المرور صحيحة فافتح الحساب، وإلا فاعرض رسالة خطأ. في هذا الدرس ستتعلم كيف تجعل برنامجك يفكر ويختار باستخدام if و else.

الكلمة if تعني «إذا». تكتب بعدها شرطاً بين قوسين، ثم الكود الذي يُنفّذ فقط إذا كان الشرط صحيحاً بين قوسين معقوفين:

let age = 20;
if (age >= 18) {
console.log("يمكنك استخراج رخصة القيادة");
}
الناتج
يمكنك استخراج رخصة القيادة

الشرط age >= 18 قيمته true، فنُفّذ الكود. ولو كانت قيمة age تساوي 16 لما ظهر أي شيء.

الأمر يشبه إشارة المرور: إذا كانت خضراء، تعبر. الشرط هو لون الإشارة، والكود داخل القوسين المعقوفين هو العبور.

ماذا لو أردت أن تفعل شيئاً آخر عندما يكون الشرط خاطئاً؟ استخدم else التي تعني «وإلا»:

let age = 16;
if (age >= 18) {
console.log("يمكنك استخراج رخصة القيادة");
} else {
console.log("انتظر حتى تبلغ 18 عاماً");
}
الناتج
انتظر حتى تبلغ 18 عاماً

الآن البرنامج أمام طريقين، ويسلك واحداً فقط منهما دائماً، لا الاثنين معاً ولا أي منهما.

الحياة ليست دائماً «نعم أو لا». عندما يكون عندك عدة احتمالات، أضف 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. هذه طريقة مختصرة وشائعة لفحص «هل كتب المستخدم شيئاً؟».

هذا برنامج ينصحك حسب درجة الحرارة. غيّر قيمة temperature إلى 25 ثم 10، وشاهد كيف يتغير القرار. ثم حاول أن تضيف شرطاً جديداً لدرجة حرارة أعلى من 40:

جرّب بنفسكJavaScript
أو اضغط Ctrl + Enter

الناتج

  • استخدام = بدلاً من ===: الشرط if (age = 18) لا يقارن، بل يضع القيمة 18 في المتغير! والقيمة 18 صحيحة، فيُنفّذ الكود دائماً ويتغير عمرك دون أن تشعر. استخدم === للمقارنة.
  • فاصلة منقوطة بعد الشرط: if (age >= 18); تنهي الشرط فوراً، فيُنفّذ الكود الذي بعدها دائماً. لا تضع ; بعد قوس الشرط.
  • ترتيب else if الخاطئ: ابدأ بالشرط الأضيق كما رأيت في مثال الدرجات.

سؤال

إذا كانت score = 70، ماذا يطبع الكود في مثال الدرجات؟

سؤال

ما قيمة true && false؟

  • if تنفّذ الكود فقط إذا كان الشرط صحيحاً، و else تنفّذ البديل.
  • else if لعدة احتمالات، وJavaScript تتوقف عند أول شرط صحيح، فالترتيب مهم.
  • && تعني «و»، و || تعني «أو»، و ! تعكس القيمة.
  • القيم الخاطئة ست: false و 0 و "" و null و undefined و NaN، وكل ما عداها صحيح.
  • قارن بـ === وليس بـ =، ولا تضع فاصلة منقوطة بعد قوس الشرط.