عمليات المقارنة في JavaScript للمبتدئين: الفرق بين == و === مع أمثلة عملية كثيرة
تخيّل أنك تبني نظام تسجيل دخول: تريد التحقق أن كلمة المرور المدخلة تطابق الكلمة الصحيحة. هنا تبدأ أهمية Comparison Operators في JavaScript.
إذا كنت تبحث عن الفرق بين == و === في JavaScript أو كيف تكتب شروط مقارنة صحيحة أو لماذا يفضل ===، فهذا الدرس يشرحها بأمثلة واضحة وكثيرة.
ما هي Comparison Operators في JavaScript؟
هي معاملات تقارن بين قيمتين (وأحياناً بين القيمة والنوع)
لتحديد هل الشرط صحيح أم لا. النتيجة دائماً تكون true أو false.
قاعدة ذهبية: في أغلب الحالات استخدم===و!==لتجنب التحويل التلقائي للأنواع.
| المعامل | المعنى | مثال JavaScript | النتيجة |
|---|---|---|---|
== | يساوي (القيمة فقط) | 5 == "5" | true |
=== | يساوي تماماً (القيمة + النوع) | 5 === "5" | false |
!= | لا يساوي (القيمة فقط) | 5 != "6" | true |
!== | لا يساوي تماماً | 5 !== "5" | true |
> | أكبر من | 10 > 5 | true |
< | أصغر من | 3 < 1 | false |
>= | أكبر من أو يساوي | 5 >= 5 | true |
<= | أصغر من أو يساوي | 4 <= 6 | true |
1) الفرق بين == و === في JavaScript
هذا أهم جزء في الدرس. == يحاول تحويل الأنواع تلقائياً، بينما === لا يقوم بذلك.
console.log(5 == "5"); // true
console.log(5 === "5"); // false
ماذا يفعل هذا الكود؟ يقارن نفس القيم مرة بمقارنة مرنة ومرة بمقارنة صارمة.
النتيجة المتوقعة: الأولى true بسبب التحويل التلقائي، والثانية false لاختلاف النوع.
خطأ شائع: استخدام == دون قصد ثم الحصول على شرط صحيح بشكل غير متوقع.
2) مثال عملي: التحقق من النجاح
let score = 90;
let minPass = 50;
console.log(score >= minPass); // true
console.log(score === "90"); // false
ماذا يفعل هذا الكود؟ يفحص هل الطالب ناجح، ثم يقارن رقم score بنص.
النتيجة المتوقعة: النجاح true، والمقارنة الصارمة مع النص false.
خطأ شائع: نسيان أن البيانات القادمة من input غالباً تكون String.
3) أمثلة إضافية مهمة للمبتدئ
المقارنة بين null و undefined
console.log(null == undefined); // true
console.log(null === undefined); // false
ماذا يفعل هذا الكود؟ يوضح فرق المقارنة المرنة والصارمة بين قيمتين "فارغتين" ظاهرياً.
النتيجة المتوقعة: مع == النتيجة true، ومع === false.
خطأ شائع: افتراض أن القيمتين متطابقتان دائماً في كل الحالات.
المقارنة بين النصوص (String comparison)
console.log('apple' < 'banana'); // true
console.log('10' > '2'); // false
ماذا يفعل هذا الكود؟ يقارن النصوص ترتيبياً (lexicographically) وليس حسابياً.
النتيجة المتوقعة: المقارنة الثانية قد تبدو غريبة لأنهما نصان لا رقمين.
خطأ شائع: مقارنة أرقام مخزنة كنصوص باستخدام >/< بدون تحويل.
استخدام Number قبل المقارنة
let userInput = '20';
console.log(userInput > 18); // true (تحويل ضمني)
console.log(Number(userInput) > 18); // true (واضح وصريح)
ماذا يفعل هذا الكود؟ يقارن قيمة input قبل وبعد التحويل الصريح.
النتيجة المتوقعة: كلاهما true هنا، لكن التحويل الصريح أكثر أماناً ووضوحاً.
خطأ شائع: الاعتماد على التحويل الضمني دائماً مما يسبب bugs في حالات أخرى.
Story قصيرة: شرط تسجيل دخول فشل رغم تطابق الرقم
مطور مبتدئ قارن رمز التحقق 1234 (Number) مع قيمة input
"1234" (String) باستخدام ===.
الشرط رجع false رغم أن الأرقام نفسها.
الحل كان إما تحويل القيمة إلى Number أو مقارنة النص بالنص بشكل متسق.
النتيجة في المتصفح (Console concept)
console.log(10 > 3); // true
console.log(10 === "10"); // false
console.log(null == undefined); // true
Checklist سريعة قبل كتابة أي شرط
- هل نوع القيمتين متطابق؟ استخدم
typeofعند الشك. - هل تحتاج مقارنة صارمة؟ استخدم
===و!==. - هل القيمة القادمة من input نص وتحتاج تحويلاً؟
- هل تتوقع Boolean فعلاً من نتيجة المقارنة؟
=== و !== كخيار افتراضي في JavaScript لكتابة شروط أدق وأكثر وضوحاً.
روابط المتابعة بعد هذا الدرس
الخطوة التالية مباشرة: العوامل المنطقية في JavaScript ثم الجمل الشرطية if/else في JavaScript.
الأسئلة الشائعة — FAQ (أسئلة بحثية شائعة)
ما الفرق بين == و === في JavaScript؟
== يقارن القيمة مع تحويل الأنواع، بينما === يقارن القيمة والنوع بدون تحويل.
ما هي Comparison Operators في JavaScript؟
هي معاملات المقارنة مثل == و=== و!= و!== و> و< و>= و<=.
لماذا يفضل استخدام === في JavaScript؟
لأنه يمنع التحويل التلقائي للأنواع ويقلل الأخطاء المنطقية في الشروط.
متى أستخدم != ومتى أستخدم !==؟
استخدم !== كافتراضي لأنه يقارن القيمة والنوع معاً بشكل صارم.
كيف أتجنب الأخطاء في المقارنات؟
وحّد نوع البيانات قبل المقارنة، واستخدم === و!==، وافحص القيم بـ console.log عند الحاجة.
للمتابعة مباشرة: ابدأ بدرس العوامل المنطقية في JavaScript ثم انتقل إلى الجمل الشرطية if/else في JavaScript.
=== و!== و>=، ثم اطبع النتائج وتأكد من نوع كل قيمة قبل المقارنة.