มีสองวิธีในการสำรวจอาร์เรย์ใน JS
การคัดลอกรหัสมีดังนี้:
var array = ['a']
// มาตรฐานสำหรับลูป
สำหรับ (var i = 1; i <array.length; i ++) {
การแจ้งเตือน (อาร์เรย์ [i])
-
// foreach loop
สำหรับ (var i ในอาร์เรย์) {
การแจ้งเตือน (อาร์เรย์ [i])
-
ภายใต้สถานการณ์ปกติสองวิธีข้างต้นของการสำรวจอาเรย์นั้นเหมือนกัน ก่อนอื่นมาพูดถึงความแตกต่างแรกระหว่างสอง
I ในมาตรฐานสำหรับลูปเป็นประเภทตัวเลขซึ่งแสดงถึงตัวห้อยของอาร์เรย์ แต่ I ในลูป foreach แสดงถึงคีย์ของอาร์เรย์เป็นประเภทสตริงเพราะทุกอย่างใน JS เป็นวัตถุ ลองแจ้งเตือน (typeof i); ความแตกต่างนี้เป็นปัญหาเล็ก ๆ ตอนนี้ฉันเพิ่มรหัสต่อไปนี้และผลลัพธ์การดำเนินการด้านบนจะแตกต่างกัน
การคัดลอกรหัสมีดังนี้:
// Extended JS Native Array
array.prototype.test = function ()
-
ลองดูว่ารหัสด้านบนดำเนินการอะไร เราพบว่ามาตรฐานสำหรับลูปยังคงวนรอบจริงในอาร์เรย์ แต่ในเวลานี้ลูป foreach ถูกพิมพ์ออกมาจากวิธีการทดสอบที่ฉันเพิ่งเขียน นี่คือความแตกต่างที่ยิ่งใหญ่ที่สุดระหว่างและ foreach traversing array หากเราใช้ foreach เพื่อสำรวจอาร์เรย์ในโครงการสมมติว่ามีวันที่มีคนขยายคลาสอาร์เรย์อาร์เรย์ดั้งเดิมโดยไม่ตั้งใจหรือแนะนำกรอบ JS ภายนอกเพื่อขยายอาร์เรย์ดั้งเดิม จากนั้นคำถามก็เกิดขึ้น
อีกสองคะแนนที่จะแนะนำ
1. อย่าใช้ในการสำรวจอาร์เรย์และใช้มาตรฐานสำหรับอาร์เรย์ตัวแปรลูปในการรวมกัน (เราไม่สามารถรับประกันได้ว่า JS ที่เราแนะนำจะใช้ต้นแบบเพื่อขยายอาร์เรย์ดั้งเดิมหรือไม่)
2. หากคุณต้องการขยายคลาสดั้งเดิมของ JS อย่าใช้ต้นแบบ