데이터를 순회하는 역할을 하는 이터레이터(iterator)
for of와 for in은 어떤 차이점이 있는지 알아보자.
ES6 이전 for문을 아래와 같이 사용했을 것이다.
for (var i=0; i < data.length; i++) {
console.log(data[i]);
}
ES5 이후엔 forEach문을을 사용할 수 있게 되었다.
myArr.forEach(function (value) {
console.log(value);
});
forEach문의 단점은 break문을 사용해 루프를 중단하거나 return을 사용해 함수를 빠져나올 수 없다는 것이다.
웬만하면 for in 루프는 쓰지 말자.
for (var idx in myArr) {
console.log(myArray[idx]);
}
사용하지 말아야 할 이유는
- idx(인덱스)에 할당되는 값은 string(문자열)이다.
인덱스 값이 숫자가 아니기 때문에 ("2" + 1 == "21")을 기대하지 않았을 것이다. - 배열 요소만 순회하는 것이 아니다.
myArr.name이라는 속성을 가지고 있다면 배열 요소 말고 index == "name" 속성을 대상으로 한 번 더 실행될 것이다.
또한 배열의 프로토타입 체인(prototype chain)도 순회하게 된다. - 순회 순서가 무작위이다.
ES6 for of 루프
for (let value of myArr) {
console.log(value);
}
for of문은 forEach()문과 달리 break, continue, return 구문 모두 사용할 수 있다.
간결하고 직관적인 문법이다.
for in문의 모든 단점을 대체할 수 있다.
for in, for of 차이점?
for in문은 객체의 속성들을 순회하기 위한 구문이고
for of문은 배열의 요소. data를 순회하기 위한 구문이다.
'웹 > JavaScript' 카테고리의 다른 글
object type 객체란? (0) | 2021.01.06 |
---|---|
ES6 배열. spread operator 펼침연산자 ...arr, Array.from (0) | 2021.01.04 |
es6에서 추가된 string 메소드들 (0) | 2021.01.02 |
헷갈리는 var, let 차이. 쉽게 한 줄 요약 (0) | 2021.01.01 |
javascript arrow function 화살표 함수 (0) | 2020.08.28 |
댓글