🔍 المشغلات المنطقية في JavaScript: دماغ البرنامج الذكي 🧠

مرحباً بك في عالم المنطق البرمجي! بعد أن تعلمنا في الدروس السابقة كيفية عمل المقارنات (مثل <, >, ===) التي تعطينا إجابة true أو false، حان الوقت لنسأل: ماذا لو أردنا دمج أكثر من شرط معاً؟ هنا يأتي دور الأبطال الثلاثة: المشغلات المنطقية (Logical Operators). فكر فيهم كـ "كلمات الربط" في عالم البرمجة، التي تسمح لنا باتخاذ قرارات أكثر ذكاءً وتعقيداً.


🧩 ما هي المشغلات المنطقية؟

المشغلات المنطقية هي رموز خاصة نستخدمها للتعامل مع القيم المنطقية (true و false) ودمجها أو عكسها. الهدف الأساسي هو بناء شروط مركبة للتحكم في مسار تنفيذ البرنامج (مثل جمل if التي سنتعلمها لاحقاً).

أنواعها الأساسية ثلاثة:

  1. && (AND - و): تطلب تحقيق جميع الشروط.
  2. || (OR - أو): تطلب تحقيق واحد على الأقل من الشروط.
  3. ! (NOT - ليس): تعكس قيمة الشرط.

🤝 المشغل && (Logical AND)

هذا المشغل يعني "و". يكون نتيجته true فقط إذا كان كلا الطرفين (أو جميع الشروط) صحيحين. إذا كان أحد الطرفين false، فالنتيجة ستكون false.

// مثال 1: كلا الشرطين صحيح
console.log(true && true);   // الناتج: true
// الشرط: صحيح "و" صحيح = صحيح

// مثال 2: أحد الشرطين خطأ
console.log(true && false);  // الناتج: false
// الشرط: صحيح "و" خطأ = خطأ

// مثال واقعي بسيط:
let hasTicket = true;
let hasID = true;
let canEnter = hasTicket && hasID; // يمكن الدخول إذا كان لديه تذكرة "و" هوية
console.log(canEnter); // الناتج: true

💡 قاعدة && الذهبية: النتيجة true فقط إذا كان الكل true.


🍰 المشغل || (Logical OR)

هذا المشغل يعني "أو". يكون نتيجته true إذا كان أحد الطرفين (أو أحد الشروط) على الأقل صحيحاً. تكون النتيجة false فقط إذا كان كلا الطرفين false.

// مثال 1: أحد الشرطين صحيح
console.log(true || false);  // الناتج: true
// الشرط: صحيح "أو" خطأ = صحيح

// مثال 2: كلا الشرطين خطأ
console.log(false || false); // الناتج: false
// الشرط: خطأ "أو" خطأ = خطأ

// مثال واقعي بسيط:
let hasCash = false;
let hasCreditCard = true;
let canPay = hasCash || hasCreditCard; // يمكن الدفع إذا كان لديه نقداً "أو" بطاقة ائتمان
console.log(canPay); // الناتج: true

💡 قاعدة || الذهبية: النتيجة false فقط إذا كان الكل false.


🔄 المشغل ! (Logical NOT)

هذا المشغل يعني "ليس". وهو مشغل أحادي (يعمل على قيمة واحدة فقط). وظيفته ببساطة عكس القيمة المنطقية. إذا كانت true يصير false، والعكس صحيح.

// مثال على العكس:
console.log(!true);   // الناتج: false
console.log(!false);  // الناتج: true

// مثال واقعي بسيط:
let isDoorLocked = true;
let canOpenDoor = !isDoorLocked; // يمكن فتح الباب إذا كان "ليس" مقفولاً
console.log(canOpenDoor); // الناتج: false (لأن الباب مقفول، وعكس true هو false)

💡 تذكر: علامة التعجب ! تعني "ليس". !true تقرأ "ليس صحيحاً" وتساوي false.


🧪 خلط المشغلات مع المقارنات (أمثلة عملية)

قوة المشغلات المنطقية تظهر عندما ندمجها مع مشغلات المقارنة التي تعلمناها.

// مثال: التحقق من عمر مناسب ووجود إذن
let age = 20;
let hasPermission = true;

// يمكن المشاهدة إذا كان العمر 18 أو أكثر "و" لديه إذن
let canWatchMovie = (age >= 18) && hasPermission;
console.log(canWatchMovie); // الناتج: true

// مثال: عرض خصم إذا كان اليوم عطلة "أو" إذا كان العميل عضوياً
let isHoliday = false;
let isMember = true;
let hasDiscount = isHoliday || isMember;
console.log(hasDiscount); // الناتج: true (لأنه عضو، حتى لو ليس عطلة)

ملاحظة: الأقواس () حول (age >= 18) ليست إلزامية هنا، لكنها تساعد في جعل الكود أكثر وضوحاً وقراءة.


🎯 الخلاصة: متى نستخدم كل مشغل؟

  • استخدم && (AND) عندما يجب تحقيق جميع الشروط معاً. مثل: "إذا كان الطالب حاضراً و قد دفع المصروفات".
  • استخدم || (OR) عندما يكفي تحقيق شرط واحد على الأقل. مثل: "يمكنك الدخول إذا كنت موظفاً أو ضيفاً مدعواً".
  • استخدم ! (NOT) عندما تريد عكس منطق الشرط. مثل: "افعل هذا إذا كان الباب ليس مقفولاً".