헷갈리는 forEach, for in, for of를 정리해보고자 한다.
forEach는 모든 요소를 반복하며 콜백함수를 실행한다.
오직 Array객체에서만 사용가능한 메서드. 반복문이 아니라 함수이다.
const arr=['가','나','다','라'];
arr.forEach(item =>{
console.log(item);
});
//가나다라
for...in은 객체에 사용할 수 있다. 객체의 key값과 value값을 뽑아내는데 유용한 반복문.
Array에서도 사용할 수 있지만 일반적으로 Object를 제외한 객체에는 사용하지 않는 것이 좋다.
why? for in으로 순회를 하게 되면 해당요소뿐 아니라 prototype chain을 따라 확장 속성들도 함께 순회하기 때문이다.
var obj={
a:'가',
b:'나',
c:'다'
};
for(var key in obj){
console.log(key,obj[key]);
//a 가,b 나,c다
for of 반복문을 사용하기 위해서는 컬렉션 객체가 Symbol.iterator속성을 가지고 있어야만 한다. for of는 iterable한 객체의 순회를 도와주는 반복문이다. Array만 반복할 수 있는 forEach와 다르게, 내부에 Symbol.iterator를 가진 객체라면 어떤 객체든 순회할 수 있다.
var iterable=[10,20,30];
for(var value of iterable) {
console.log(value);//10,20,30
}