freeCodeCamp/guide/arabic/miscellaneous/equality-vs-identity-operator/index.md

3.3 KiB

title localeTitle
Equality Vs Identity Operator مشغل هوية المساواة مقابل

في JavaScript هناك عاملان يمكن استخدامهما للمقارنة بين قيمتين: == و === . يبدو أنها متشابهة تمامًا ولكنها تعمل بشكل مختلف ، وفي بعض الحالات ستعطي نتائج مختلفة.

مشغل الأسهم

يقارن عامل المساواة (==) بين قيمتين بعد كل التحويلات النوعية اللازمة. دعونا نلقي نظرة على بعض الأمثلة:

0 == '' // -> true false == 'false' // -> false

في المثال الأول ، يخضع كل من 0 و "(سلسلة فارغة) للتحويل التلقائي. يتم تحويل كلاهما إلى العطاء الكاذب:

false == false

وهو صحيح بشكل واضح. في المثال الثاني "false" ، يتم تقييم سلسلة غير فارغة إلى true مما يجعل التعبير الكامل غير صحيح.

عامل الهوية

وبالمقارنة ، فإن عامل تشغيل الهوية (===) سيعود صحته إذا وفقط إذا كانت القيمتان اللتان تقارنان من نفس النوع ولهما نفس القيمة. إذا حاولنا مقارنة قيم نوعين مختلفين ، فستظهر دائمًا كاذبة .

false === 0 // -> false 0 === '' // -> false 5 === 5 // -> true

على وجه الدقة ، يتحقق === مما إذا كان هناك متغيرين يشيران إلى نفس الكائن ، أو في حالة أنواع القيم (مثل int ، أو double ، أو String ، أو bool ، أو غير ذلك) إذا كان لكل منهما نفس القيمة.

`var array1 = [ 5, 6, 7 ]; var array2 = [ 5, 6, 7 ]; var array3 = array2;

array1 === array2 // -> false array1 == array2 // -> false

array2 === array3 // -> true array2 == array3 // -> true `

كل من array1 و array2 لهما نفس النوع وهما متساويان ولكن array1 === array2 يُرجع false كما تشير إلى كائنات مختلفة. إرجاع array2 === array3 كما يشير كلا المتغيرات إلى نفس الكائن.

ما المشغل الذي ينبغي علي استخدامه؟

من المهم أن نفهم الفرق بين == و === ولكن أي مشغل ينبغي استخدامه؟

عند استخدام == مشغل جافا سكريبت ، سيتم تنفيذ جميع التحويلات اللازمة لمقارنة قيمتين. يبدو الأمر مناسبًا حقًا ، إلا أن تأثيرات هذا التحويل قد تكون مربكة وتؤدي إلى صعوبة شديدة في تتبع الأخطاء.

دوغلاس كروكفورد ، مؤلف كتاب جافا سكريبت: يقترح الجزء الجيد أنه يجب استخدام === في كل مكان ، بدلا من == المشغل لتجنب الأخطاء المحتملة. في معظم الحالات ، يجب عليك اتباع هذه النصيحة ، ما لم ترغب تحديدًا في الاستفادة من التحويل التلقائي للنوع.