عوامل المقارنة والعوامل المنطقية — JavaScript
ما هذا ولماذا؟
تخيل أنك روبوت ينفذ الأوامر. لاتخاذ القرارات، تحتاج إلى أن تكون قادرًا على مقارنة الأشياء والتحقق من الشروط. على سبيل المثال:
- المقارنة: "هل لديك 100 روبل؟" (تقارن أموالك بالرقم 100).
- المنطق: "هل لديك 100 روبل و لست جائعًا؟" (تتحقق من شرطين في وقت واحد).
في JavaScript، تساعد عوامل المقارنة والعوامل المنطقية الكمبيوتر على الإجابة على مثل هذه الأسئلة. ستكون النتيجة دائمًا true (صحيح) أو false (خطأ). إنها مثل إشارة المرور: أخضر - يمكنك التحرك (true)، أحمر - توقف (false).
لماذا نحتاج هذا؟ بدونها، ستكون البرامج مملة - كانت ستنفذ الأوامر بالتسلسل فقط. ولكن معها، يمكن للبرنامج التفاعل مع المواقف المختلفة: على سبيل المثال، إذا أدخل المستخدم كلمة المرور الصحيحة - دعه يدخل، وإذا لم يكن الأمر كذلك - أظهر خطأ.
في Python، تعمل هذه العوامل بنفس الطريقة تقريبًا، لكن في JavaScript هناك حيلها الخاصة. سنقوم بتحليلها.
أمثلة على الكود مع الشرح
1. عوامل المقارنة الأساسية: >, <, >=, <=
الأبسط - كما في درس الرياضيات. نقارن الأرقام:
// مثال 1: أكبر أم أصغر؟
let العمر = 12;
let يمكنالدخول = العمر >= 12; // هل يمكن الدخول إذا كان العمر 12 أو أكثر؟
console.log(يمكنالدخول); // سيظهر: true (لأن 12 >= 12 — صحيح)
// مثال 2: المقارنة مع حد
let درجةالحرارة = 30;
let الجوحار = درجةالحرارة > 25; // أكبر من 25؟
console.log(الجوحار); // true (30 > 25 — صحيح)
let الجوبارد = درجةالحرارة < 10; // أصغر من 10؟
console.log(الجوبارد); // false (30 ليست أصغر من 10)
// مثال 3: يمكن مقارنة السلاسل النصية أيضًا!
console.log("بطيخ" > "موز"); // false
// لماذا؟ تتم مقارنة الأحرف أبجديًا: 'ب' (الحرف الأول) أصغر من 'م' (الحرف الثاني)
// في Python نفس الشيء، لكن حساسية حالة الأحرف مختلفة
هام: في JavaScript، تتم مقارنة السلاسل النصية وفقًا لرمز Unicode (كما في الجدول). "أ" أصغر من "ي"، و"أ" (الكبيرة) أصغر من "أ" (الصغيرة). هذا مثل القاموس: تأتي الأحرف الكبيرة أولاً، ثم الأحرف الصغيرة.
2. عوامل المساواة: == و ===
هنا يبدأ الجزء المثير للاهتمام! في JavaScript، هناك طريقتان للتحقق مما إذا كانت القيم متساوية:
==— "مساواة غير صارمة" (تقارن القيم، لكنها قد تحول الأنواع)===— "مساواة صارمة" (تقارن القيمة ونوع البيانات)
// مثال 4: مقارنة الأرقام والسلاسل النصية
let رقم = 5;
let سلسلة = "5";
console.log(رقم == سلسلة); // true — لأن 5 يساوي 5 (حول JavaScript السلسلة إلى رقم)
console.log(رقم === سلسلة); // false — لأن الرقم (number) لا يساوي السلسلة (string)!
// في Python لا يوجد هذا: "5" == 5 سيعطي False مباشرة، بدون تحويل
// مثال 5: المقارنة مع true/false
console.log(1 == true); // true — لأن true يتحول إلى 1
console.log(1 === true); // false — أنواع مختلفة (رقم مقابل منطقي)
console.log(0 == false); // true
console.log(0 === false); // false
// مثال 6: القيم الفارغة
console.log(null == undefined); // true — قاعدة خاصة في JS
console.log(null === undefined); // false — أنواع مختلفة
// في Python لا يوجد undefined، يوجد فقط None، وهو لا يساوي أي شيء سوى نفسه
نصيحة للمبتدئين: استخدم دائمًا === (المساواة الصارمة) لتجنب المفاجآت. هذا مثل الرياضيات: 5 و "5" شيئان مختلفان، على الرغم من أنهما يبدوان متشابهين.
3. العامل المنطقي && (و)
العامل "و" (AND) يُرجع true فقط إذا كان كلا الشرطين صحيحين. في الحياة، هذا مثل: "سأذهب للتنزه إذا أنهيت واجباتي و سمحت لي أمي".
// مثال 7: التحقق من شرطين
let العمر = 14;
let لديهتذكرة = true;
let يمكن_الذهاب_للسينما = (العمر >= 12) && (لديهتذكرة === true);
console.log(يمكن_الذهاب_للسينما); // true — العمر مناسب و التذكرة موجودة
// إذا كان العمر 10:
العمر = 10;
يمكن_الذهاب_للسينما = (العمر >= 12) && (لديهتذكرة === true);
console.log(يمكن_الذهاب_للسينما); // false — الشرط الأول خاطئ، والثاني صحيح، لكن "و" يتطلب كليهما
// مثال 8: شرط معقد
let الدرجة = 4;
let السلوك = "ممتاز";
let سيتم_المدح = (الدرجة === 5) && (السلوك === "ممتاز");
console.log(سيتم_المدح); // false — الدرجة ليست 5، على الرغم من أن السلوك ممتاز
// في Python يُكتب بنفس الطريقة: and
نصيحة ذهبية: JavaScript "كسول" — إذا كان الشرط الأول في && خاطئًا، فإنه لا يتحقق حتى من الشرط الثاني. هذا يسمى "قصر الدائرة". نوفر الوقت!
4. العامل المنطقي || (أو)
العامل "أو" (OR) يُرجع true إذا كان شرط واحد على الأقل صحيحًا. كما في الحياة: "سأذهب للتنزه إذا أنهيت واجباتي أو إذا كانت الشمس مشرقة في الخارج".
// مثال 9: الاختيار من بين خيارين
let لديهمال = false;
let لديههدية = true;
let يمكن_شراء_لعبة = لديهمال || لديههدية;
console.log(يمكن_شراء_لعبة); // true — لا يوجد مال، لكن توجد هدية (شرط واحد صحيح)
// مثال 10: التحقق من العمر
let عمرالمستخدم = 17;
let الدخولمسموح = (عمرالمستخدم >= 18) || (عمرالمستخدم >= 16 && لديهتذكرة);
// إذا كان العمر >=18 أو (العمر >=16 و لديه تذكرة)
console.log(الدخولمسموح); // false — 17 ليس >=18، وعلى الرغم من أن 17>=16، إلا أن لديهتذكرة غير معرّف (undefined — وهو false)
// مثال 11: القيم الافتراضية
let الاسم = "";
let الاسمالمعروض = الاسم || "ضيف";
console.log(الاسمالمعروض); // "ضيف" — لأن السلسلة الفارغة تعتبر false
// في Python: الاسم or "ضيف" — يعمل بنفس الطريقة
حيلة: || أيضًا "كسول" — إذا كان الشرط الأول صحيحًا، لا يتم التحقق من الثاني. يُستخدم هذا لتعيين القيم الافتراضية.
5. العامل المنطقي ! (ليس)
العامل "ليس" (NOT) يقلب القيمة المنطقية. إذا كان هناك true، فإنه يحولها إلى false والعكس صحيح. هذا مثل قول "العكس".
// مثال 12: قلب القيمة
let الجوماطر = true;
let الجوليس_ماطر = !الجوماطر;
console.log(الجوليس_ماطر); // false — لأننا قلبنا true
// مثال 13: التحقق من عدم وجود شيء
let اسمالمستخدم = "";
let الاسمغيرموجود = !اسمالمستخدم;
console.log(الاسمغيرموجود); // true — السلسلة الفارغة تعتبر false، وقلبها يعطي true
// مثال 14: الاستخدام في الشروط
let هلالتسجيل_مغلق = false;
if (!هلالتسجيل_مغلق) {
console.log("التسجيل مفتوح!"); // سيتم تنفيذ هذا الكود
}
// في Python: not — يعمل بنفس الطريقة
هام: العامل ! دائمًا يُرجع قيمة منطقية (true أو false). حتى إذا قمت بتطبيقه على رقم أو سلسلة نصية، ستحصل على true أو false.
الخلاصة: متى تستخدم ماذا؟
| العامل | المعنى | متى تستخدم |
|---|---|---|
>, <, >=, <= |
المقارنة (أكبر، أصغر) | للأرقام والسلاسل النصية (مقارنة الأعمار، الدرجات، التواريخ) |
=== |
مساواة صارمة | دائمًا تقريبًا (للتحقق من تطابق القيمة والنوع) |
== |
مساواة غير صارمة | نادرًا (فقط إذا كنت متأكدًا من أن تحويل النوع آمن) |
&& |
و (AND) | عندما تحتاج إلى أن تكون جميع الشروط صحيحة |
|| |
أو (OR) | عندما يكفي شرط واحد صحيح |
! |
ليس (NOT) | لقلب شرط أو التحقق من الغياب |
الفرق الرئيسي عن Python:
- في Python:
and,or,not(كلمات). في JavaScript:&&,||,!(رموز). - في Python:
==يقارن القيم فقط (مثل===في JS). لا يوجد=="غير صارم" في Python. - في Python:
Noneلا يساويundefined(لأنه لا يوجدundefined). - في JavaScript: يمكن مقارنة السلاسل النصية والأرقام باستخدام
==(مع التحويل)، لكن من الأفضل عدم القيام بذلك.
تدرب على كتابة الشروط في وحدة التحكم (console) في المتصفح — ستفهم بسرعة كيف تعمل! 🚀
```