ฉันเห็นคำถามมากมายที่แนะนำให้ใช้:
for (var i = 0; i < myArray.length; i++){ /* ... */ }
แทน:
for (var i in myArray){ /* ... */ }
สำหรับอาร์เรย์เนื่องจากการวนซ้ำไม่สอดคล้องกัน ( ดูที่นี่ )
อย่างไรก็ตามฉันไม่พบสิ่งที่ดูเหมือนจะชอบลูปเชิงวัตถุ:
myArray.forEach(function(item, index){ /* ... */ });
ซึ่งดูเหมือนง่ายกว่าสำหรับฉัน
สำหรับโครงการปัจจุบันของฉันความเข้ากันได้ของ IE8 เป็นสิ่งสำคัญและฉันกำลังพิจารณาใช้polyfill ของ Mozillaแต่ฉันไม่แน่ใจ 100% ว่าจะได้ผลอย่างไร
- มีความแตกต่างระหว่างมาตรฐานสำหรับลูป (ตัวอย่างแรกด้านบน) และการใช้งาน Array.prototype.forEach โดยเบราว์เซอร์สมัยใหม่หรือไม่
- มีความแตกต่างระหว่างการใช้งานเบราว์เซอร์สมัยใหม่และการใช้งานของ Mozilla ที่เชื่อมโยงกับด้านบน (โดยคำนึงถึง IE8 เป็นพิเศษ) หรือไม่
- ประสิทธิภาพไม่ได้เป็นปัญหามากนักเพียง แต่สอดคล้องกับคุณสมบัติที่มีการทำซ้ำ
break
forEach
แต่ข้อดีอย่างมากคือการสร้างขอบเขตใหม่ด้วยฟังก์ชัน ด้วย polyfill คุณไม่ควรมีปัญหาใด ๆ (อย่างน้อยฉันก็ไม่พบอะไรเลย)