في JavaScript ، يمكن استخدام المشغلين == و == لتحديد ما إذا كانت القيمتين متساوية ؛ الفرق هو أنه إذا كانت القيمتان اللتان يتم الحكم عليهما غير متناسقين ، فسوف يعود المشغل === بشكل مباشر ، في حين أن المشغل == سيصدر حكمًا بعد تحويل النوع. قواعد الحكم التفصيلية هي كما يلي:
=== قواعد الحكم على المشغلين
1. إذا كانت أنواع القيمتين غير متسقة ، فالتعويض خطأ.
2. إذا كان للقيمتين نفس النوع والقيم هي نفسها ، فالتراجع صحيح. NAN هي حالة خاصة ، NAN === NAN يعيد خطأ.
3. إذا كانت كلتا القيمتين من نوع الكائن ، فعلى مثل Java ، ما لم تكن المراجع متسقة (تشير المرجع إلى عنوان الكائن نفسه) ، حتى لو كان المحتوى في الكائن هو نفسه تمامًا ، فإن القيمتين تعتبر غير متسقة ، وستُرجع العملية المقابلة. على سبيل المثال ، قم بإنشاء صفيفتين جديدتين بنفس المحتوى تمامًا ، ثم قم بإجراء العملية === عليها وإرجاع النتيجة إلى FALSE - على الرغم من أن محتوىها هو نفسه تمامًا ، إلا أنهما لا يزالان ينتميون إلى كائنين مختلفين.
4.0 ===-0 إرجاع صحيح.
== قواعد حكم المشغلين
سوف يقوم المشغل == بكتابة القيمة ثم قارنها. يتبع تحويل النوع المبادئ التالية: قم أولاً بتحويله إلى رقم ثم قارنه ، وقم بتحويله أولاً إلى سلسلة ثم قارنه. قواعد الحكم المحددة هي كما يلي:
1. إذا كان نوعي القيمة هما نفسه ، فأعود بعد إجراء عملية ===.
2. null == undefined هو صحيح.
3. سيتم تحويل True إلى 1 ومقارنة ، وسيتم تحويل خطأ إلى 0 ومقارنة.
4. إذا كان أحد القيم هو كائن ، فقم بتحويله إلى رقم ثم قارنه ، باستثناء كائن التاريخ.
5. إذا كان أحد القيم هو كائن تاريخ ، قم بتحويله إلى سلسلة ثم قارنه.
تجربة
نسخة الكود كما يلي:
console.log ("3" === 3) ؛ // false
console.log (nan === nan) ؛ // false
var a = {x: 1 ، y: 2} ؛
var b = {x: 1 ، y: 2} ؛
var c = a ؛
console.log (a === b) ؛ // false
console.log (a === c) ؛ // true
console.log (0 === -0) ؛ // true
console.log ("3" == 3) ؛ // true
console.log (null == undefined) ؛ // true
console.log (true == 1) ؛ // true
console.log (true == 9) ؛ // false
console.log ([9] == 9) ؛ // true
console.log ([9] == "9") ؛ // true
var d = new Date () ؛
var s = d.toString () ؛
var n = d.valueof () ؛
console.log (d == s) ؛ // true
console.log (d == n) ؛ // false