كشف مفارقة جافا سكريبت: لماذا "0" خطأ في المقارنة ولكنه خطأ في عبارات If
في جافا سكريبت، سلوك البدائية " 0" يشكل لغزًا للمطورين. في حين أن العوامل المنطقية مثل "==" تساوي "0" بـ false، فإن "0" تتصرف على أنها صادقة في شروط "if".
مفارقة المقارنة
الكود يوضح أدناه مفارقة المقارنة:
"0" == false // true
false == "0" // true
في هذا السيناريو، تقوم JavaScript بإجبار "0" على القيمة false استنادًا إلى القيمتين "truthy" و"falsy". تعتبر القيم مثل "0"، و"NaN"، و"null"، و"undef" خاطئة، في حين تعتبر القيم الأخرى صحيحة. يصبح محيرًا عند استخدام "0" في عبارة "if":
if ("0") console.log("ha") // haعلى الرغم من الإكراه إلى false في المقارنات، يتم تقييم "0" إلى true في شروط "if". وذلك لأن عبارات "if" في JavaScript تتعامل مع جميع السلاسل غير الفارغة، بما في ذلك "0"، على أنها صحيحة.
جداول الحقيقة
if ("0") console.log("ha") // ha
لفهم هذا السلوك، نحن يمكن الرجوع إلى جداول الصدق جافا سكريبت. يقومون بتصنيف القيم بناءً على حالتها الصادقة/الخاطئة في شروط المقارنة (==) و"if" (الحقيقية):القيمة
المقارنة
صحيح/صحيح | صحيح | |
---|---|---|
خطأ/خطأ | خطأ | خطأ |
خطأ | صحيح | |
الاستنتاج | ينشأ تناقض "0" في JavaScript من التفسيرات المختلفة للصدق في المقارنة (= =) وعبارات "إذا" (صادقة). يعد هذا تمييزًا دقيقًا ولكنه حاسم يجب على المطورين الانتباه إليه لتجنب النتائج غير المتوقعة. كأفضل ممارسة، يُنصح باستخدام المساواة الصارمة (===) أثناء المقارنات لضمان إجراء تقييمات دقيقة. |
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3