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()
는 함수, 즉 메서드입니다.
따라서 반복문이 아닌 함수로 취급되기 때문에 continue
와 break
를 사용하면 Syntax Error 를 내뿜습니다.
각 요소를 단순 순회할 뿐
forEach()
는 배열의 각 요소를 단순 순회할 경우 사용하고, 반복문으로써의 제어가 필요할때는 for
반복문을 사용해야함을 주의해야겠습니다.
🔧 도움을 준 글
📘 forEach 메소드와 루프 제어문 - 개발자 김철수
Author And Source
이 문제에 관하여(JavaScript 에서 forEach() 제어), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@mangozoo20/JavaScript-에서-forEach-제어저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)