const reduce = (f, acc, iter) => {
// iter에 값이 없으면 두번째 인자인 acc를 iterable로 변환
// acc는 iter의 첫번째 값인 0으로
if (!iter) {
iter = acc[Symbol.iterator]();
acc = iter.next().value;
}
// iter에서 next를 한번 하였기 때문에 (a) => a + 1, 부터 들어감.
for (const a of iter) {
acc = f(acc, a); // acc = ?(0, a => a + 1) { ? }
}
return acc;
};
const go = (...args) => reduce((a, f) => f(a), args);
go(
0,
(a) => a + 1,
(a) => a + 10,
(a) => a + 100
);
reduce에서 f로 인자로 넘겨준 함수가 reduce 함수내에서 어떤식으로 동작하는지를 모르겠습니다.
이거가지고 2일동안 막히고 있네요 ㅠㅠ
2021. 10. 08. 18:24
익명 함수여서 그런지 보이지가 않네요..
아래 부분만 어떤식으로 돌아가는지 알려주세요!
acc = f(acc, a);