Menu
Coddy logo textTech
flag Ar iconالعربيةdown icon

المساواة الصارمة مقابل العادية

جزء من قسم Fundamentals في رحلة JavaScript على Coddy — الدرس 16 من 77.

في JavaScript، هناك نوعان من معاملات المساواة: المساواة غير الصارمة (==) و المساواة الصارمة (===).

تتحقق المساواة غير الصارمة (==) مما إذا كانت القيمتان متساويتين بعد إجراء تحويل النوع (type coercion). وهذا يعني أنه إذا كانت المعاملات من أنواع مختلفة، فسيحاول JavaScript تحويلها إلى نوع مشترك قبل إجراء المقارنة.

على سبيل المثال:

let b = 5 == "5";   // تكون القيمة true، لأن السلسلة النصية "5" يتم تحويلها إلى الرقم 5 قبل المقارنة
let b = 0 == false; // تساوي true، لأن القيمة المنطقية false يتم تحويلها إلى الرقم 0 قبل المقارنة

المساواة الصارمة (===)، من ناحية أخرى، تتحقق مما إذا كانت القيمتان متساويتين بدون إجراء أي تحويل للأنواع. إذا كانت المعاملات ذات أنواع مختلفة، فإنهما يعتبران غير متساويين.

على سبيل المثال:

let b = 5 === "5";   // يحمل القيمة false، لأنه لا يتم إجراء تحويل للنوع، والرقم لا يساوي السلسلة النصية
let b = 0 === false; // تحتوي على false، لأنه لا يتم إجراء تحويل للأنواع، والرقم 0 لا يساوي القيمة المنطقية false

بشكل عام، يُوصى باستخدام المساواة الصارمة (===) في معظم الحالات لتجنب النتائج غير المتوقعة بسبب تحويل الأنواع القسري (type coercion).

وبالمثل، هناك أيضًا عاملا عدم المساواة غير الصارم (!=) و عدم المساواة الصارم (!==) اللذان يعملان بطريقة مماثلة، لكنهما يتحققان من عدم المساواة بدلاً من المساواة.

يتحقق عدم المساواة غير الصارم (!=) مما إذا كانت القيمتان غير متساويتين بعد إجراء تحويل النوع (type coercion)، بينما يتحقق عدم المساواة الصارم (!==) مما إذا كانت القيمتان غير متساويتين دون إجراء تحويل النوع.

challenge icon

التحدي

مبتدئ

لقد تم تزويدك بكود يحتوي على ثلاثة متغيرات: a، و b، و c.

مهمتك هي إجراء المقارنات التالية وطباعة النتائج:

  1. تحقق مما إذا كان a مساوياً بشكل غير صارم لـ b وقم بتخزين النتيجة في d.
  2. تحقق مما إذا كان a مساوياً بشكل صارم لـ c وقم بتخزين النتيجة في e.
  3. تحقق مما إذا كان b غير مساوٍ بشكل غير صارم لـ c وقم بتخزين النتيجة في f.
  4. تحقق مما إذا كان a غير مساوٍ بشكل صارم لـ b وقم بتخزين النتيجة في g.

استخدم المتغيرات المعطاة وعوامل المقارنة لإكمال المهمة.

ورقة مرجعية

يحتوي JavaScript على نوعين من معاملات المساواة:

المساواة غير الصارمة (Loose equality) (==) تقوم بتحويل النوع (type coercion) قبل المقارنة:

5 == "5"   // true - تم تحويل السلسلة النصية "5" إلى الرقم 5
0 == false // true - تم تحويل القيمة المنطقية false إلى الرقم 0

المساواة الصارمة (Strict equality) (===) تقارن بدون تحويل النوع:

5 === "5"   // false - رقم مقابل سلسلة نصية، لا يوجد تحويل
0 === false // false - رقم مقابل قيمة منطقية، لا يوجد تحويل

وبالمثل بالنسبة لمعاملات عدم المساواة:

  • عدم المساواة غير الصارمة (Loose inequality) (!=) - تقوم بتحويل النوع
  • عدم المساواة الصارمة (Strict inequality) (!==) - لا يوجد تحويل للنوع

يُوصى باستخدام المساواة الصارمة (===) لتجنب النتائج غير المتوقعة الناتجة عن تحويل النوع.

جرّب بنفسك

// المتغيرات المعطاة
let a = 10
let b = "10"
let c = true

// اكتب الكود الخاص بك أدناه


// لا تغير السطر أدناه
console.log(`d = ${d}`)
console.log(`e = ${e}`)
console.log(`f = ${f}`)
console.log(`g = ${g}`)
quiz iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

جميع دروس Fundamentals