عوامل تشغيل المقارنة

تقارن عوامل المقارنة بين قيم المعاملين وتقيّم ما إذا كانت العبارة التي تشكلها هي true أو false. يستخدم المثال التالي دالة عامل المساواة الصارمة (===) لمقارنة معاملين: التعبير 2 + 2 والقيمة 4. نظرًا لأن نتيجة التعبير وعدد 4 هي نفسها، ويتم تقييم هذا التعبير إلى true:

2 + 2 === 4
> true

اثنان من عوامل المقارنة الأكثر استخدامًا هما == للمساواة الحرة و=== للمساواة الصارمة. تُجري == مقارنة غير دقيقة بين اثنين عن طريق فرض المعاملات على أنواع البيانات المطابقة، إن أمكن. بالنسبة على سبيل المثال، تعرض الدالة 2 == "2" القيمة true، على الرغم من إجراء المقارنة بين قيمة رقم وقيمة سلسلة.

2 == 2
> true

2 == "2"
> true

وينطبق ذلك أيضًا على != التي تعرض true فقط إذا كانت المعامِلات المقارنة ليست متساوية بشكل غير متساوي.

2 != 3
> true

2 != "2"
> false

إنّ المقارنات الصارمة باستخدام === أو !== لا يتم فرض قيود على الكتابة. بالنسبة إلى مقارنة صارمة لتقييمها مع true، يجب أن تحتوي القيم التي تتم مقارنتها على نفس نوع البيانات. لهذا السبب، يتم إرجاع مبلغ true من قِبل 2 == "2" مقابل 2 === "2". إرجاع false:

2 === 3
> false

2 === "2"
> false

لإزالة أي غموض قد ينتج عن الإجبار التلقائي، يمكنك استخدام السمة === كلما ممكن.

مُشغِّل الوصف الاستخدام النتيجة
=== متساوٍ تمامًا 2 === 2 صحيح
!== لا يساوي تمامًا 2 !== "2" صحيح
== يساوي (أو "يساوي فضفاضًا") 2 == "2" صحيح
!= غير متساوين 2 != "3" صحيح
> أكبر من 3 > 2 صحيح
>= أكبر من أو يساوي 2 >= 2 صحيح
< أقل من 2 < 3 صحيح
<= أقل من أو يساوي 2 <= 3 صحيح

المحتوى الصادق والزائف

جميع القيم في JavaScript هي true أو false ضمنيًا ويمكن فرضها على القيمة المنطقية المقابلة — على سبيل المثال، باستخدام دالة "تساوي مقارنتها. يتم فرض مجموعة محدودة من القيم على false:

  • 0
  • null
  • undefined
  • NaN
  • سلسلة فارغة ("")

تفرض جميع القيم الأخرى على true، بما في ذلك أي سلسلة تحتوي على قيمة واحدة أو أكثر. الأحرف وجميع الأرقام غير الصفرية. يُطلق على هذه المظاهر عادةً اسم "حمراء". أو "خطأ" القيم.

"My string" == true
> true

100 == true
> true

0 == true
> false

العوامل المنطقية

استخدِم عوامل التشغيل المنطقية AND (&&) وOR (||) وNOT (!) للتحكم في تدفق النص البرمجي بناءً على تقييم عبارتَين شرطيتَين أو أكثر:


2 === 3 || 5 === 5;
> true

2 === 2 && 2 === "2"
> false

2 === 2 && !"My string."
> false

ينفي التعبير المنطقي NOT (!) قيمة الحقيقة أو الخطأ للمعامل، ويتم تقييمه إلى true إذا تم تقييم المعامل إلى false، وfalse إذا تم تقييم المعامل إلى true:


true
> true

!true
> false

!false
> true

استخدام عامل التشغيل NOT المنطقي (!) أمام نوع بيانات آخر، مثل رقم أو سلسلة، وتفرض هذه القيمة على قيمة منطقية وتعكس الحقيقة أو القيمة الزائفة للنتيجة.

"string"
> "string"

!"string"
> false

0
> 0

!0
> true

من الشائع استخدام عاملي NOT لإجبار البيانات بسرعة على مطابقة القيمة المنطقية:

!!"string"
> true

!!0
> false

لا ينفذ العاملان المنطقيان AND وOR أي إكراه من تلقاء نفسه. هم إرجاع قيمة أحد المعاملين اللذين يتم تقييمهما، مع المُعامِل المحدد من خلال هذا التقييم.

تعرض Logical AND (&&) أول المعاملين الخاصين بها فقط إذا كان هذا المعامل. يتم تقييمه إلى false، والمعامل الثاني بخلاف ذلك. ومن خلال المقارنات التي يتم تقييمها إلى القيم المنطقية، فإنها تعرض true فقط إذا كانت المعاملات على طرفي المعادلة المنطقي AND يتم تقييمها إلى true. وإذا تم تقييم أي من الجانبين بقيمة false، يصبح تعرض false.

true && false
> false

false && true
> false

false && false
> false

true && true
> true

عند استخدام && مع معاملين غير منطقيين، يتم عرض المعامل الأول. بدون تغيير إذا كان يمكن فرضها على false. إذا كان يمكن فرض المعامل الأول إلى true، يتم عرض المعامل الثاني بدون تغيير:

false && "My string"
> false

null && "My string"
> null

"My string" && false
> false

"My string" && "My second string"
> "My second string"

2 === 2 && "My string"
> "My string"

تقوم دالة OR المنطقية (||) بإرجاع أول معاملين لها فقط إذا كان هذا المعامل يتم تقييمه إلى true، والمعامل الثاني بخلاف ذلك. ومن خلال المقارنات التي يتم تقييمها إلى القيم المنطقية، فهذا يعني أنها تعرض true إذا كان أي من المعاملين يتم تقييمه إلى true، وإذا لم يتم تقييم أي من الجانبين إلى true، سيتم إرجاعه false:

true || false
> true

false || true
> true

true || true
> true

false || false
> false

عند استخدام || مع معاملين غير منطقيين، يتم عرض المعامل الأول بدون تغيير إذا أمكن فرضها على true. إذا كان يمكن فرض المعامل الأول إلى false، يتم عرض المعامل الثاني بدون تغيير:

false || "My string"
> "My string"

null || "My string"
> "My string"

"My string" || false
> "My string"

"My string" || "My second string"
> "My string"

2 === 2 || "My string"
> true

عامل تشغيل الانسجام فارغ

تم طرح هذه الميزة في ES2020 "عامل انحطاط فراغ" (??) يعرض المعامل الأول فقط إذا كان ذلك المُعامِل له أي قيمة غير null أو undefined. بخلاف ذلك، تعرض والمعامل الثاني.

null ?? "My string"
> "My string"

undefined ?? "My string"
> "My string"

true ?? "My string";
> true

يشبه ?? المعامل المنطقي OR، لكنه أكثر صرامة في كيفية استخدام المعامل الأول التقييم. تعرض || المعامل الثاني لأي تعبير يمكن تم فرضها على false، بما في ذلك undefined وnull. تعرض الدالة ?? القيمة الثانية عندما يكون المعامل الأول أي شيء بخلاف null أو undefined، حتى إذا كان يمكن فرضه على false:

0 ?? "My string";
> 0

false ?? "My string";
> false

undefined ?? "My string";
> "My string"

عوامل تشغيل المهام المنطقية

استخدِم عوامل تشغيل المهام لتحديد قيمة عامل التشغيل الثاني للعامل الأول. . المثال الأكثر شيوعًا على ذلك هو علامة يساوي واحدة (=)، وتستخدم تعيين قيمة لمتغير مُعلَن عنه.

استخدام عوامل التعيين المنطقية لتعيين قيمة لمتغير بشكل مشروط بناءً على القيمة الحقيقة أو الزائفة لذلك المتغير.

يقيّم عامل التعيين المنطقي AND (&&=) المعامل الثاني و يتم تعيينها إلى المعامل الأول إذا كان المعامل الأول سيتم تقييمه فقط true—في الواقع، "إذا كان المعامل الأول صحيحًا، فعيِّنه قيمة المعامل الثاني بدلاً من ذلك:"

let myVariable = false;
myVariable
&&= 2 + 2;
> false

myVariable
= true;
myVariable
&&= 2 + 2;
> 4

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

let myVariable = 5;
myVariable
> 2 &&= "My string"
> SyntaxError: Invalid left-hand side in assignment

يقيّم عامل التعيين المنطقي OR (||=) المعامل الثاني و يتم تعيينها إلى المعامل الأول إذا تم تقييم المعامل الأول إلى false— بفعالية "إذا كان المعامل الأول false، فعيّن له قيمة المُعامِل بدلاً من ذلك:"

let myVariable = false;
myVariable
||= 2 + 2;
> 4

myVariable
= true;
myVariable
||= 2 + 2;
> true

التحقق من فهمك

أي عامل يشير إلى "يساوي تمامًا"؟

!=
=
==
===