reduce와 go

YOUNGJOO-YOON·2021년 10월 11일
0

JavaScript

목록 보기
11/25

겉핥기로 아는 것은 위험해보이는 부분이다.

익숙해지도록 노력하는게 제일인 것 같아 복습한 내용을 다시 복기한다.


const log = t=>console.log(t);

const reduce = (f, acc, iter) => {
	if(!iter){
    	iter = acc[Symbol.iterator](); // iter가 없으므로 생성
      	acc = iter.next().value; // acc는 대체한다.
    }
  	for(const cf of iter){
    	acc = f(cf, acc); // go의 경우 보통 함수를 넘기므로 cf로 이름을 변경
    }
}

const go = (...args) => redu((cf, acc)=>cf(acc),args); 

(cf, acc)=>cf(acc) 이 부분이 웃긴데 함수와 인자를 인자로써 넘기고
인자로 넘긴 함수에 인자를 넣어 함수를 실행시킨다.

이렇게 되면

for...of 문 내부에서 저 callback 함수가 실행되는데

acc = f(cf, acc)에서 실행되게 된다.
이는 acc = (cf, acc)=>cf(acc)이다.
첫 순회에서 acc = 0이고

cf는 a=>a+1이므로 (0은 reduce의 if문에 의해 이미 next 진행되어 없음)
0=>0+1 = acc가 된다.

profile
이 블로그의 글은 제 생각을 정리한 글과 인터넷 어딘가에서 배운 것을 정리한 글입니다. 출처는 되도록 남기도록 하겠습니다. 수정 및 건의 오류 등이 있으면 언제든지 댓글 부탁드립니다.

0개의 댓글