المساواة الصارمة مقابل العادية
جزء من قسم 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)، بينما يتحقق عدم المساواة الصارم (!==) مما إذا كانت القيمتان غير متساويتين دون إجراء تحويل النوع.
التحدي
مبتدئلقد تم تزويدك بكود يحتوي على ثلاثة متغيرات: a، و b، و c.
مهمتك هي إجراء المقارنات التالية وطباعة النتائج:
- تحقق مما إذا كان
aمساوياً بشكل غير صارم لـbوقم بتخزين النتيجة فيd. - تحقق مما إذا كان
aمساوياً بشكل صارم لـcوقم بتخزين النتيجة فيe. - تحقق مما إذا كان
bغير مساوٍ بشكل غير صارم لـcوقم بتخزين النتيجة فيf. - تحقق مما إذا كان
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}`)يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس Fundamentals
2المتغيرات
الأرقامString (النصوص)Boolean (القيم المنطقية)قواعد التسميةالمتغيرات الفارغةمراجعة - تهيئة المتغيراتالثوابت8الحلقات التكرارية
حلقة Forحلقة Whileجملة Breakجملة Continueمراجعة - Factorialحلقة Do Whileالحلقات المتداخلة3المعاملات - الجزء الأول
المعاملات الحسابيةمعامل باقي القسمة (Modulo)اختصارات العمليات الحسابيةمعاملات المقارنةالمساواة الصارمة مقابل العاديةمراجعة - العمليات الحسابية البسيطة6أساسيات الإدخال والإخراج (IO)
الإخراجالإخراج باستخدام المتغيراتتحويل أنواع البيانات - الجزء الأولتحويل أنواع البيانات - الجزء الثانيمراجعة - حتى 120مراجعة - صح أم خطأ