الدرس 6 من 8
مقارنات خادعة
- 12 دقيقة
- 4 فحوص
- 3 تلميحات
- إلى المطلوب
هدف الدرس
ثلاث مقارنات تعطي نتيجة خاطئة بصمت
الشرح
حين تقارن بـ == تحوّل JavaScript الطرفين إلى نوع واحد أولًا، فيصير '' == 0 و'0' == 0 صحيحين معًا، أي أن الحقل الفارغ والحقل الذي فيه صفر شيء واحد في نظرها. أمّا === فيقارن النوع والقيمة دون أي تحويل، ولهذا هو الخيار الافتراضي.
وNaN هي القيمة الوحيدة التي لا تساوي نفسها، فنتيجة الشرط n === NaN خاطئة دائمًا حتى لو كانت n نفسها NaN، لذلك افحصها بـ Number.isNaN(n).
أمّا الكائنات فتُقارَن بمراجعها لا بمحتواها، فالكائنان المتطابقان في كل خاصية ليسا متساويين ما لم يكونا الكائن نفسه، وما يصل من الخادم كائن جديد دائمًا، فقارن بمعرّف ثابت.
المطلوب
أصلح المقارنات الثلاث، فاجعل isEmpty لا تعدّ '0' فراغًا، وparseQty تُرجع null لما ليس رقمًا، وinCart تتعرّف على المنتج بمعرّفه id.
الفحوص
4 فحوص- النصّ «0» قيمة لا فراغ
- القيمة NaN تُكتشف ولا تمرّ
- الأرقام السليمة تمرّ كما هي
- المنتج يُعرف بمعرّفه لا بمرجعه