Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> JavaScript

ทำไม for...in กับ array iteration ใน JavaScript จึงเป็น bad idea?

ใช้ for..in loops กับ array iteration เป็น bad idea เพราะพฤติกรรมนี้

Normal iteration loops

ตัวอย่าง

let arr = [] arr[4] = 5 for (let i = 0; i < arr.length; i ++) {    console.log(arr[i]) }

ผลลัพธ์

undefined undefined undefined undefined 5

ถ้า iterate ด้วย for..in

ตัวอย่าง

let arr = [] arr[4] = 5 for (let i in arr) {    console.log(arr[i]) }

ผลลัพธ์

5

สังเกตว่า array length คือ 5 แต่มัน iterate แค่ค่าเดียว

เพราะ for-in ทำเพื่อ enumerate object properties จะขึ้น prototype chain และ enumerate inherited properties ซึ่งบางครั้งไม่ต้องการ