forEach, for in, for of

JEON.HYEONG.JUN·2022년 4월 21일
0

codekata 진행 중 위 개념이 많이 나온다.

for문과 if문밖에 모르는데 풀이를 보면 위의 기능들이 무조건 나오기 때문에 정리를 해보자.


선 3줄 요약.
1. forEach는 Array를 순회하는 데 사용되는 Array의 메소드.
2. for in은 Object의 key를 순회하기 위해 사용되는 반복문. 단, 확장 속성까지 함께 순회한다는 점 고려.
3. for of는 이터러블한 객체를 모두 순회할 수 있는 강력한 반복문!
출처: https://n-log.tistory.com/39


📌forEach


위처럼 배열을 순회하면서 메소드안에 함수를 실행한다.


📌 for in

위처럼 object를 순회한다.
기존 for문에서라면 'let key = 1;'을 선언하고 'key++'도 해줘야 하지만, for in문을 사용하면 위처럼 간단하게 나타낼 수 있다.

Array에도 사용할 수도 있지만 일반적으로 Object를 제외한 객체에는 사용하지 않는 것이 좋다.
왜냐하면 for in으로 순회를 하게 되면 해당 요소뿐 아니라 위처럼 prototype chain을 따라 확장 속성들도 함께 순회하기 때문이다.

또한 for in 구문은 객체의 key 값에 접근할 수 있지만, value 값에 접근하는 방법은 제공하지 않는다.


📌for of

for of는 이터러블한 객체의 순회를 도와주는 반복문이다.
때문에 Array만 반복할 수 있는 forEach와 다르게, 내부에 [Symbol.iterator]를 가진 객체라면 어떤 객체든 순회할 수 있다.
하지만 iterable하지 않은 일반 Object에는 사용할 수 없다.

이터러블에 관한 정리가 보다 쉽게 되어 있으니 헷갈릴 때마다 위의 글을 읽어보자.

for of의 사용예시.


for of가 굉장히 이해하기 어려웠다.

  1. 다만, map이나 forEach 처럼 index를 가져오지는 못하기 때문에, 만약 index가 필요한 경우라면 for..of문 보다는 다른 메서드를 활용해야만 한다.
  2. for.. of문에서는 매 반복 때 마다 배열의 상태가 업데이트되기 때문에 만일 도중에 배열의 요소의 개수가 늘어나는 경우, 반복횟수도 함께 늘어나게 된다.

위의 내용은 처음 알았는데 밑의 블로그에 잘 정리가 되있으니 자주자주 참고해봐야 할 것 같다.
https://bigtop.tistory.com/59

profile
💻😀👍🎁👏😁

0개의 댓글