باختصار: == قم بتحويل النوع أولاً ثم قارنه ، === احكم على النوع أولاً ، إذا لم يكن نفس النوع ، فهو خاطئ مباشرة.
=== يعني أن جانبي المقارنة يجب أن يكونا هو نفسه تمامًا
تنبيه (0 == "") ؛ // truealert (0 == false) ؛ // truealert ("" "== false) ؛ // حقيقي تنبيه (0 === "") ؛ // falsealsealert (0 === false) ؛ // falsealsealert ("" === false) ؛ // خطأ شنيعدعنا نتحدث عن === ، هذا بسيط نسبيًا ، قواعد المقارنة المحددة هي كما يلي:
1. إذا كانت الأنواع مختلفة ، فهي [غير متكافئة]
2. إذا كان كلاهما قيمًا رقميًا وهما نفس القيمة ، ثم [متساوٍ] ؛ (! استثناء) هو ، إذا كان واحد منهم على الأقل نان ، ثم [ليس متساوًا]. (لتحديد ما إذا كانت القيمة هي نان ، يمكنك فقط استخدام isnan () للحكم)
3. إذا كان كلاهما سلاسل والشخصيات في كل موقف هي نفسها ، فإن [المساواة] ؛ خلاف ذلك [غير متساوٍ].
4. إذا كانت كلتا القيمتين صحيحة ، أو كلاهما خطأ ، ثم [متساوٍ].
5. إذا كانت كلتا القيمتين تشير إلى نفس الكائن أو الدالة ، ثم [المساواة] ؛ خلاف ذلك [غير متساوٍ].
6. إذا كانت كلتا القيمتين لاغية ، أو كلاهما غير محدد ، ثم [متساوٍ].
دعنا نتحدث عن == ، قواعد المقارنة المحددة هي كما يلي:
1. إذا كان النوعان من القيمة متماثلان ، فأداء === مقارنة ، وقواعد المقارنة هي نفسها كما هو موضح أعلاه.
2. إذا كان نوعي القيمة مختلفان ، فقد يكونان متساويين. يتم إجراء تحويل النوع وفقًا للقواعد التالية ثم مقارنته:
أ. إذا كان أحدهم لاغا والآخر غير محدد ، ثم [متساو].
ب. إذا كان أحدهما عبارة عن سلسلة والآخر عبارة عن قيمة رقمية ، فقم بتحويل السلسلة إلى قيمة رقمية ثم قارنها.
ج. إذا كانت أي قيمة صحيحة ، قم بتحويلها إلى 1 وقارنها ؛ إذا كانت أي قيمة خاطئة ، قم بتحويلها إلى 0 وقارنها.
د. إذا كان أحدهما كائنًا والآخر هو رقمي أو سلسلة ، فقم بتحويل الكائن إلى قيمة من النوع الأساسي ثم قارنه. قم بتحويل كائن إلى نوع أساسي واستخدم طريقة ToString أو ValueOF الخاصة به. سيحاول فئة JS Core المدمجة قيمة قبل tostring ؛ الاستثناء هو التاريخ ، الذي يستخدم تحويل tostring. كائن أساسي غير JS ، دعنا نقول (إنه أكثر إزعاجًا ، لا أفهم الكثير)
ه. أي مجموعة أخرى (صفيف صفيف ، وما إلى ذلك) ، هي [غير متكافئة].