forEach()
→ 배열의 각 요소에 대해 callbackFn 함수를 오름차순 인덱스 순서로 한 번씩 호출
→ map()과 달리 forEach()는 항상 undefined를 반환하므로 체이닝 불가
→ 값이 할당된 배열 인덱스에 대해서만 호출
const array1 = ['a', 'b', 'c'];
array1.forEach((element) => console.log(element));
// Expected output: "a"
// Expected output: "b"
// Expected output: "c"
forEach(callbackFn)
forEach(callbackFn, thisArg)
callbackFn
→ 배열의 각 요소에 대해 실행할 함수입니다. 반환값은 사용되지 않습니다.
→ 함수는 다음 인수를 사용하여 호출됩니다.
1. element : 배열에서 처리 중인 현재 요소
2. index : 배열에서 처리 중인 현재 요소의 인덱스
3. array : forEach()를 호출한 배열
thisArg (optional)
- callbackFn을 실행할 때 this 값으로 사용할 값
undefined (없음)callbackFn으로 제공되는 함수는 배열 변경 가능callbackFn을 처음 호출하기 전에 저장callbackFn은 forEach() 호출이 시작되었을 때 배열의 초기 length 값을 초과하여 추가된 요소는 방문 XcallbackFn이 해당 인덱스에 대해 다시 호출 XcallbackFn에 의해 변경되는 경우, callbackFn에 전달된 값은 해당 요소가 방문될 당시의 값이 됩니다.forEach() 루프를 중지/중단 불가forEach() 메서드는 적절한 도구가 아님forEach()는 동기 함수를 기대하며 프로미스를 기다리지 않으므로 프로미스(또는 비동기 함수)를 forEach 콜백으로 사용할 때는 그 의미를 알고 있어야 함 const ratings = [5, 4, 5];
let sum = 0;
const sumFunction = async (a, b) => a + b;
ratings.forEach(async (rating) => {
sum = await sumFunction(sum, rating);
});
console.log(sum);
// 순진하게 예상한 출력: 14
// 실제 출력: 0