Avatar ·

أي عامل مقارنة يجب استخدامه في JavaScript: == أم ===؟

مرحباً بالجميع! لقد بدأت للتو في تعلم JavaScript وواجهت ارتباكاً. في بعض الكتب المدرسية يُكتب أنه يجب استخدام `==`، وفي أخرى يُكتب `===`. جربت كليهما ويبدو أنهما يعملان بنفس الطريقة، لكن بعد ذلك صادفت سلوكاً غريباً. هذا مثال: ```javascript console.log(5 == "5"); // true console.log(5 === "5"); // false ``` لماذا يحدث ذلك؟ فـ 5 هو رقم، و"5" هي سلسلة نصية. كنت أتوقع أن يعيد كلاهما false، لكن الأول يقول true. والأكثر غرابة: ```javascript console.log(false == 0); // true console.log(false === 0); // false console.log(null == undefined); // true console.log(null === undefined); // false ``` أشعر أن `===` أكثر صرامة وقابلية للتنبؤ، لكنني رأيت الكثير من الأكواد على GitHub تستخدم `==`. أي منهما يُعتبر صحيحاً؟ متى يجب استخدام المساواة المزدوجة، ومتى يجب استخدام المساواة الثلاثية؟ وهل يمكنني الاكتفاء بـ `===` فقط؟ سأكون ممتناً لشرح مفصل مع أمثلة حتى أفهم أخيراً.