تقارن عوامل المقارنة بين قيم المعاملين وتقيّم ما إذا كانت
العبارة التي تشكلها هي 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
التحقق من فهمك
أي عامل يشير إلى "يساوي تمامًا"؟
!=
=
==
===