ارتباك حول صدق المصفوفات الفارغة والمساواة مع الخطأ
في JavaScript، تعتبر المصفوفات الفارغة صحيحة. ومع ذلك، عند مقارنتها بالقيمة الأولية false، يتم تقييمها أيضًا على أنها false. يمكن أن يعزى هذا السلوك المحير إلى تحويلات النوع الضمنية التي تقوم بها عوامل المساواة.
دعونا نلقي نظرة فاحصة على رمز المثال المقدم:
var arr = []; console.log('Array:', arr); if (arr) console.log("It's true!"); if (arr == false) console.log("It's false!"); if (arr && arr == false) console.log("...what??");
تتحقق عبارة if الأولى من وجود arr (لأنه كائن). نظرًا لأن arr هو كائن Array، فهو موجود ويتم تقييم الشرط إلى true.
ومع ذلك، تقارن عبارة if الثانية قيمة arr (بعد استدعاء toString()) بالقيمة الأولية false. في JavaScript، يتم تحويل [] إلى سلسلة فارغة ("") عند استدعائها باستخدام toString()، والتي تعتبر قيمة زائفة (مع قيمة فارغة، وغير محددة، و0، وما إلى ذلك). لذلك، يتم تقييم الشرط أيضًا على أنه خطأ.
تجمع عبارة if الثالثة بين الشرطين السابقين باستخدام عامل التشغيل AND (&&). بما أن كلا من arr (الآن سلسلة فارغة) وarr == false (true & false) يتم تقييمهما إلى false، يتم تقييم الحالة بأكملها إلى false.
في الختام، المصفوفات الفارغة صحيحة بمعنى أنها تعتبر تقديم وتقييم إلى صحيح عند استخدامها في سياقات كائن أو شرطية. ومع ذلك، عند مقارنتها بالقيمة الأولية false، يتم تقييمها على أنها false بسبب تحويلات النوع الضمنية التي يتم إجراؤها بواسطة عمليات المساواة.
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3