for...in
왜 누군가가 당신에게 그렇게 말했는지 추측 할 수 있지만 배열에 루프를 사용하는 것은 잘못이 아닙니다.
1.) 배열의 목적을 가지고 있지만 'forEach'라는 더 많은 구문과 구문을 가진 고차 함수 또는 메소드가 이미 있습니다. Array.prototype.forEach(function(element, index, array) {} );
2) 배열은 항상 길이를 가지고 있지만, for...in
그리고 forEach
어떤 값을 함수를 실행하지 않는 'undefined'
경우에만 정의 된 값이 인덱스에 대해. 따라서 하나의 값만 할당하면 이러한 루프는 함수를 한 번만 실행하지만 배열이 열거되므로 항상 정의 된 값을 갖는 가장 높은 색인까지의 길이를 갖지만 이러한 값을 사용할 때 해당 길이는 눈에 띄지 않을 수 있습니다 루프.
3.) 표준 for 루프는 매개 변수에서 정의한 횟수만큼 함수를 실행하며 배열에 번호가 매겨 지므로 함수를 실행할 횟수를 정의하는 것이 더 합리적입니다. 다른 루프와 달리 for 루프는 값의 정의 여부에 관계없이 배열의 모든 인덱스에 대해 함수를 실행할 수 있습니다.
본질적으로 모든 루프를 사용할 수 있지만 작동 방식을 정확하게 기억해야합니다. 서로 다른 루프가 반복되는 조건과 개별 기능을 이해하고 서로 다른 시나리오에 다소 적합하다는 것을 인식하십시오.
또한 작성하기 쉽고 기능이 더 많기 때문에 일반적으로 루프 forEach
보다 메소드 를 사용하는 것이 더 나은 방법으로 간주 될 수 for...in
있으므로이 메소드와 표준 만 사용하는 습관을 갖고 싶을 수도 있습니다. 요구.
아래의 첫 두 루프는 console.log 문을 한 번만 실행하는 반면, for 루프 표준은 지정된 횟수만큼 함수를 실행합니다 (이 경우 array.length = 6).
var arr = [];
arr[5] = 'F';
for (var index in arr) {
console.log(index);
console.log(arr[index]);
console.log(arr)
}
// 5
// 'F'
// => (6) [undefined x 5, 6]
arr.forEach(function(element, index, arr) {
console.log(index);
console.log(element);
console.log(arr);
});
// 5
// 'F'
// => Array (6) [undefined x 5, 6]
for (var index = 0; index < arr.length; index++) {
console.log(index);
console.log(arr[index]);
console.log(arr);
};
// 0
// undefined
// => Array (6) [undefined x 5, 6]
// 1
// undefined
// => Array (6) [undefined x 5, 6]
// 2
// undefined
// => Array (6) [undefined x 5, 6]
// 3
// undefined
// => Array (6) [undefined x 5, 6]
// 4
// undefined
// => Array (6) [undefined x 5, 6]
// 5
// 'F'
// => Array (6) [undefined x 5, 6]