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