DEV Community

Mohamed Emad
Mohamed Emad

Posted on

JavaScript Coercion in Arabic

دايما بتلاقى فى الانترڤيوهات سؤال عن ايه الفرق بين ال "===" و ال "==" فى الچاڤاسكريبت و بتكون الاجابة فى الاغلب ان ال "===" احسن عشان بتقارن النوع و الڤاليو فى حين ان ال "==" بتقارن الڤاليو بس .
دى تعتبر الاجابة السهلة بس الاجابة دى بتفتح الباب لسؤال تانى لو ال "===" احسن و افضل ليه ال "==" متشالتش او اتلغت من اللغة او ليه الكوميونتى مطلبش انها تتشال طالما ملهاش لازمة؟
لو انت قريت ال specs هتلاقى ان الفرق بينهم ان ال"==" بتسمح بال coercion بمعنى ان لما الكومبيلر بيلاقى ال"==" بيعمل حاجة اسمها implicit coercion يعنى انه بيحول النوع بتاع ال variable لنوع تانى و ده بيكون تبعا لقواعد معينة.
للتبسيط لو قلنا اننا عندنا كود
123 === ‘123’
اللى هيحصل ان الكومبايلر هيروح يشوف هل اول قيمة بتساوى تانى قيمة من حيث النوع و القيمة و لو صح هتكون النتيجة true و لو غلط هتكون false فعشان كدة النتيجة للكود ده هى false.

نيجى بقى للمشكلة بتاعتنا
123 == ‘123’
اللى هيحصل هنا مختلف شوية الكومبايلر هيمعل خطوتين مش خطوة واحدة الاولى انه هى هيحول القيمة التانية ل Number و بعدها هيقارن بين القيمتين عشان يكون الكود النهائى
123 === Number(‘123’)
و النتيجة هتكون trueو للعلم ال "==" بتسخدم ال "===" كأخر خطوة للتأكيد ان القيمتين بيتساووا مع بعض
ده لينك هيفيدك تفهم التحويل بيتم ازاى https://lnkd.in/dbZnqZT

Discussion (0)