المساواة المرنة مقابل الصارمة
افهموا المقارنات بين == و===.
المساواة المرنة مقابل الصارمة درس مجاني في JavaScript Academy على CoddyKit. هذا هو الدرس 2 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في JavaScript Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة JavaScript Academy 4 دروس في المجموع.
عاملا مساواة
تحتوي JavaScript على عاملي مساواة. تقارن المساواة الصارمة (علامات المساواة الثلاث) دون تحويل. أما المساواة غير الصارمة (علامتا المساواة) فتحوّل الأنواع قبل المقارنة.
console.log(1 === 1)
console.log(1 == "1")المساواة الصارمة
تعيد المساواة الصارمة true فقط عندما يتطابق النوع والقيمة معًا. ولا يحدث أي تحويل تلقائي.
console.log(5 === 5)
console.log(5 === "5")
console.log(true === 1)المساواة غير الصارمة تُجري تحويلًا
تحاول المساواة غير الصارمة تحويل المعاملات إلى نوع مشترك قبل المقارنة، مما قد ينتج عنه true بصورة مفاجئة.
console.log(5 == "5")
console.log(true == 1)
console.log(0 == false)العدد والسلسلة
عند مقارنة عدد بسلسلة باستخدام المساواة غير الصارمة، تُحوّل السلسلة أولًا إلى عدد.
console.log("10" == 10)
console.log("10" === 10)التحويل التلقائي للقيم المنطقية
عند استخدام المساواة غير الصارمة، تُحوّل القيمة المنطقية إلى عدد، فتصبح true مساوية لـ1 وfalse مساوية لـ0 قبل المقارنة.
console.log(true == 1)
console.log(false == 0)
console.log(true == 2)Null و Undefined
تتعامل المساواة غير الصارمة مع null وundefined على أنهما متساويان، لكنهما لا يساويان أي شيء آخر مثل الصفر.
console.log(null == undefined)
console.log(null === undefined)
console.log(null == 0)استثناء NaN
لا تساوي NaN أي شيء، بما في ذلك نفسها، باستخدام أي من العاملين. استخدموا Number.isNaN لاختبارها.
console.log(NaN === NaN)
console.log(NaN == NaN)
console.log(Number.isNaN(NaN))مراجع الكائنات
تُقارن الكائنات حسب المرجع، لا حسب المحتوى. فكائنان مختلفان لهما الخصائص نفسها لا يكونان متساويين أبدًا.
const a = { x: 1 }
const b = { x: 1 }
console.log(a === b)
console.log(a === a)نتائج مفاجئة للمساواة غير الصارمة
قد تنتج المساواة غير الصارمة نتائج غير بديهية. فالسلسلة الفارغة تساوي الصفر، والمصفوفة الفارغة تساوي false بعد التحويل.
console.log("" == 0)
console.log([] == false)
console.log("0" == false)فضّلوا المساواة الصارمة
توصي معظم أدلة الأسلوب باستخدام المساواة الصارمة افتراضيًا لتجنب أخطاء التحويل التلقائي الخفية. استخدموا المساواة غير الصارمة فقط لسبب مقصود.
const value = "42"
if (value === "42") {
console.log("matched as string")
}التحقق من Null أو Undefined
من الاستخدامات المقبولة للمساواة غير الصارمة التحقق من null أو undefined معًا، إذ يغطي نمط double-equals null القيمتين.
function check(v) {
if (v == null) {
return "missing"
}
return "present"
}
console.log(check(undefined))
console.log(check(0))اختبار سريع
اختبروا معرفتكم بالمساواة.
مراجعة
مراجعة: تمنع علامات المساواة الثلاث التحويل التلقائي، بينما تُجري علامتا المساواة التحويل.
- تفحص المساواة الصارمة النوع والقيمة
- تحوّل المساواة غير الصارمة القيم إلى نوع مشترك أولًا
- تتساوى null مع undefined باستخدام المساواة غير الصارمة فقط
- فضّلوا المساواة الصارمة افتراضيًا
console.log(1 === 1)
console.log(1 == "1")الأسئلة الشائعة
هل درس «المساواة المرنة مقابل الصارمة» مجاني؟
نعم — نص درس «المساواة المرنة مقابل الصارمة» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة JavaScript Academy، انتقل إلى CoddyKit PRO. تتضمن دورة JavaScript Academy 4 دروس في المجموع.
ماذا ستتعلم في «المساواة المرنة مقابل الصارمة»؟
افهموا المقارنات بين == و===. تتمرن على JavaScript Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ JavaScript Academy؟
لا تُشترط خبرة سابقة. JavaScript Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 2 من أصل 4.
كم من الوقت يستغرق درس «المساواة المرنة مقابل الصارمة»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس JavaScript Academy هذا؟
نعم. كل درس في JavaScript Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- القيم Truthy وFalsy
- المساواة المرنة مقابل الصارمة
- التحويل الضمني للأنواع في العمليات
- تقنيات التحويل الصريح