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

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

2 + 2 === 4
> true

إجبار النوع والمساواة

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

2 == 2
> true

2 == "2"
> true

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

2 != 3
> true

2 != "2"
> false

لا تُجري المقارنات الصارمة باستخدام === أو !== عملية إجبار على النوع. لكي تُحتسب مقارنة صارمة على أنّها true، يجب أن تكون القيم التي تتم مقارنتها من نوع بيانات نفسه. لهذا السبب، تعرِض 2 == "2" القيمة true، ولكن تعرِض 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 صحيح

Truthy وfalsy

جميع القيم في 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 (!) القيمة الصحيحة أو الخاطئة للم Operand، ويُقيّم بـ true إذا كان Operand يُقيّم بـ false، وfalse إذا كان Operand يُقيّم بـ true:


true
> true

!true
> false

!false
> true

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

"string"
> "string"

!"string"
> false

0
> 0

!0
> true

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

!!"string"
> true

!!0
> false

لا تُجري عوامل التشغيل المنطقية AND وOR أيّ إكراه بأنفسهما. وتُعرِض هذه الدوالّ قيمة أحد الم Operandَين الجاري تقييمهما، مع تحديد Operand المُختار من خلال هذا التقييم.

تعرِض عملية "الواو المنطقي" (&&) أول عنصر من المعاملين فقط إذا كان هذا العنصر يُحتسب على أنّه false، وتعرِض المعامل الثاني في الحالات الأخرى. في المقارنات التي تُقيّم بقيم منطقية، لا تعرض true إلا إذا كانت الم Operand على كلا الجانبين من عامل التشغيل المنطقي AND تُقيّم بـ true. إذا تم تقييم أي من الجانبَين على أنّه false، يتم عرض false.

true && false
> false

false && true
> false

false && false
> false

true && true
> true

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

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 (||) أول الم Operandَين إلا إذا كان هذا Operand يُقيّم على أنّه true، ويعرض Operand الثاني في الحالات الأخرى. في المقارنات التي يتم فيها تقييم القيم على أنّها قيم منطقية، يعني ذلك أنّها تعرض القيمة true إذا تم تقييم أيّ من المعاملين على أنّه true، وإذا لم يتم تقييم أيّ من الجانبين على أنّه true، يتم عرض القيمة false:

true || false
> true

false || true
> true

true || true
> true

false || false
> false

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

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

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

0 ?? "My string";
> 0

false ?? "My string";
> false

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

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

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

استخدِم عوامل التعيين المنطقية لتعيين قيمة لمتغيّر بشكل مشروط استنادًا إلى القيمة الصحيحة أو الخاطئة لهذا المتغيّر.

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

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

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

تحدِّد القيمة الصحيحة أو الخاطئة للمعامل الأوّل ما إذا كان سيتم تنفيذ عملية تحديد قيمة. ومع ذلك، تؤدي محاولة تقييم الم Operand الأول باستخدام عامل مقارنة إلى قيمة منطقية true أو false، ولا يمكن تحديد قيمة لها:

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

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

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

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

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

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

===
==
=
!=