عوامل العمليات المتساوية ECMAScript
- الصفحة السابقة عوامل العلاقات
- الصفحة التالية عامل الحالة
تحديد ما إذا كانت المتغيرات متساوية هو عملية مهمة جدًا في تصميم البرامج. عند معالجة القيم الأصلية، يبدو هذا التحقق بسيطًا، ولكن عندما يتعلق الأمر بالعناصر العمومية، يصبح المهمة أكثر تعقيدًا.
يقدم ECMAScript مجموعتين من ميزات التساوي: العلامة المتساوية واللامتساوية لمعالجة القيم الأصلية، والعلامة المتساوية الكاملة واللامتساوية الكاملة لمعالجة العناصر العمومية.
العلامة المتساوية واللامتساوية
في ECMAScript، يتم تمثيل العلامة المتساوية بـ ==، وتعود إلى true فقط عندما تكون العناصر العمومية متساوية. يتم تمثيل العلامة غير المتساوية بـ !=، وتعود إلى true فقط عندما تكون العناصر العمومية غير متساوية. لتحديد ما إذا كانت العناصر العمومية متساوية، تقوم هاتان العلامتان بتحويل النوع.
قواعد تحويل النوع كما يلي:
- إذا كان أحد العناصر العمومية هو قيمة Boolean، يجب تحويلها إلى قيمة عددية قبل التحقق من التساوي. يتم تحويل false إلى 0، والصحيح إلى 1.
- إذا كان أحد العناصر العمومية هو نص، والأخرى هي عدد، يجب محاولة تحويل النص إلى عدد قبل التحقق من التساوي.
- إذا كان أحد العناصر العمومية هو عنصر عمومي، والأخرى هي نص، يجب محاولة تحويل العنصر العمومي إلى نص قبل التحقق من التساوي.
- إذا كان أحد العناصر العمومية هو عنصر عمومي، والأخرى هي عدد، يجب محاولة تحويل العنصر العمومي إلى عدد قبل التحقق من التساوي.
في التحقق من التساوي، يلتزم هذا الميزة بالقواعد التالية:
- القيمة null وundefined متساوية.
- لا يمكن تحويل null وundefined إلى قيم أخرى عند التحقق من التساوي.
- إذا كان أحد العناصر العمومية NaN، فإن العلامة المتساوية تعود إلى false، والعلامة غير المتساوية تعود إلى true.
- إذا كانت كلا العناصر العمومية، فإن المقارنة تتم على أساس القيم المشار إليها. إذا كانت العناصر العمومية تشير إلى نفس العنصر، فإن العلامة المتساوية تعود إلى true، وإلا فإن العناصر العمومية غير متساوية.
نصيحة هامة:حتى لو كانت العددان كلاهما NaN، فإن العلامة المتساوية تعود إلى false لأنه وفقًا للقواعد، NaN لا تساوي NaN.
الجدول التالي يوضح بعض الحالات الخاصة وكيفية نتائجها:
عبرة | القيمة |
---|---|
null == undefined | true |
"NaN" == NaN | false |
5 == NaN | false |
NaN == NaN | false |
NaN != NaN | true |
false == 0 | true |
true == 1 | true |
true == 2 | false |
undefined == 0 | false |
null == 0 | false |
"5" == 5 | true |
العلامة المتساوية الكاملة وغير المساوية الكاملة
عوامل المساواة وغير المساواة هي العلامة المتساوية الكاملة وغير المساوية الكاملة. تقوم هذه العلامات بعمل نفس العمل الذي تقوم به العلامة المتساوية وغير المساوية، ولكنها لا تقوم بتحويل النوع قبل التحقق من المساواة.
يتم تمثيل العلامة المتساوية الكاملة بواسطة ثلاثة علامات متساوية (===)، ويتم رد true فقط عندما لا تحتاج إلى تحويل النوع العامل يساوي.
مثال:
var sNum = "66"; var iNum = 66; alert(sNum == iNum); //يظهر "true" alert(sNum === iNum); //يظهر "false"
في هذا الكود، يستخدم alert الأول العلامة المتساوية لتحديد النص "66" والعدد 66، ويظهر "true". كما ذكرنا سابقاً، هذا بسبب أن النص "66" سيتم تحويله إلى عدد 66، ثم مقارنته بالعدد الآخر 66. يستخدم alert الثاني العلامة المتساوية الكاملة في مقارنة النص والعدد بدون تحويل النوع، وبالطبع، النص ليس يساوي العدد، لذا يظهر "false".
يتم تمثيل غير المساواة الكاملة بواسطة علامة التعجب واثنين من العلامات المتساوية (!==)، ويتم رد true فقط عندما لا تحتاج إلى تحويل نوع العمليات غير المتساوية.
مثال:
var sNum = "66"; var iNum = 66; alert(sNum != iNum); //يظهر "false" alert(sNum !== iNum); //يظهر "true"
هنا، يستخدم alert الأول غير المساواة لتحويل النص "66" إلى عدد 66، مما يجعله يساوي ثاني العامل 66. لذلك، النتيجة الحسابية هي "false" لأن العاملين متساويين. يستخدم alert الثاني غير المساواة الكاملة. يسأل هذا العامل: "هل sNum مختلف عن iNum"؟ إجابة هذا السؤال هي: نعم (true)، لأن sNum هو نص، بينما iNum هو عدد، وهم مختلفان بالتأكيد.
- الصفحة السابقة عوامل العلاقات
- الصفحة التالية عامل الحالة