JavaScript 에서 forEach() 제어


알고리즘을 연습하면서 깨달았습니다...
forEach() 에서는 루프 제어가 불가능하다는 것을요.

🔧 forEach()return

일반적인 for 문에서는 break, continue, return 등의 제어문으로 반복문을 탈출하는 것이 가능합니다.

하지만 어째서인지 forEach() 에서는 동작하지 않죠.
Java를 많이 만지며 익숙해진 탓에 처음에는 이해가 잘 안됐습니다.

1. 이름만 다른 for 문 같은데 왜 제어가 안될까?

예제를 하나 볼까요?

array = [1, 2, 3, 4];

array.forEach((element) => {
  console.log(element);
  if (element === 3) return;
});

위 예제에서 3 을 만났을 때 과연 루프가 중단될까요?
아닙니다! arr 배열의 모든 요소가 console.log() 로 출력되는 결과가 나타나요.

2. forEach() 메서드에 Callback 함수를 전달

JavaScript 에서 forEach() 는 내부에 콜백 함수를 전달받고,
따라서 return 명령은 루프 진행에 아무런 영향을 끼치지 않습니다.

다시 말해, 내부 콜백 함수에서 해당 명령이 실행될 뿐 forEach() 자체에서 값을 리턴하는 것이 아닙니다.


🔧 결론 : forEach() 는 함수다

결론은 --> 일반적으로 사용하는 for 문과 다르게 forEach()함수, 즉 메서드입니다.

따라서 반복문이 아닌 함수로 취급되기 때문에 continuebreak 를 사용하면 Syntax Error 를 내뿜습니다.

각 요소를 단순 순회할 뿐

forEach() 는 배열의 각 요소를 단순 순회할 경우 사용하고, 반복문으로써의 제어가 필요할때는 for 반복문을 사용해야함을 주의해야겠습니다.


🔧 도움을 준 글

📘 forEach 메소드와 루프 제어문 - 개발자 김철수

좋은 웹페이지 즐겨찾기