هناك طريقتان لاجتياز المصفوفات في JS
نسخة الكود كما يلي:
var array = ['a']
// قياسي للحلقة
لـ (var i = 1 ؛ i <array.length ؛ i ++) {
تنبيه (صفيف [i])
}
// foreach حلقة
لـ (var i in array) {
تنبيه (صفيف [i])
}
في ظل الظروف العادية ، فإن طريقتان أعلاه لاجتياز الصفيف هما نفسه. بادئ ذي بدء ، دعنا نتحدث عن الفرق الأول بين الاثنين
إن I in the Standard for Loop من نوع الأرقام ، والذي يمثل المفروض المفروض على الصفيف ، لكن I في حلقة Foreach يمثل مفتاح الصفيف من نوع السلسلة ، لأن كل شيء في JS هو كائن. جرب التنبيه (typeof i) ؛ هذا الاختلاف مشكلة صغيرة. الآن أقوم بإضافة الكود التالي ، وستكون نتائج التنفيذ أعلاه مختلفة.
نسخة الكود كما يلي:
// صفيف موسى JS
Array.Prototype.test = function ()
}
حاول معرفة ما ينفذه الرمز أعلاه. لقد وجدنا أن معيار الحلقة لا يزال حلقًا حقيقيًا في المصفوفات ، ولكن في هذا الوقت تتم طباعة حلقة Foreach من طريقة الاختبار التي كتبتها للتو. هذا هو الفرق الأكبر بين المصفوفات التي تجتاز. إذا استخدمنا foreach لتجاوز المصفوفات في المشروع ، لنفترض أن هناك يومًا يقوم فيه شخص ما بتوسيعها بطريق الخطأ فئة الصفيف الأصلي من JS ، أو يقدم إطار JS خارجي لتمديد الصفيف الأصلي. ثم ينشأ السؤال.
نقطتان أخريان لاقتراحهما
1. لا تستخدم لاجتياز الصفيف ، واستخدم المعيار لصفائف متغيرة الحلقة في التوحيد (لا يمكننا ضمان ما إذا كانت JS التي قدمناها ستستخدم النموذج الأولي لتمديد المصفوفة الأصلية)
2. إذا كنت تريد تمديد الفئة الأصلية من JS ، فلا تستخدم النموذج الأولي