예시
function square(num) { return num * num; } function add5(num) { return num + 5; } function mul3(num) { return num * 3; } function isOdd(num) { return num % 2 !== 0; } let output = pipe(add5, square); console.log(output(4)); // --> 81 output = pipe(square, add5, mul3); console.log(output(4)); // --> 63 output = pipe(square, mul3, add5, add5, isOdd); console.log(output(4)); // --> false
생각
- 처음에 아무 생각이 안남
- 여러함수들이 들어오는 걸 정의해야 하므로 ...funcs(spread syntax)를 함수의 매개변수로 하자
- for문으로 첫번째 함수가 실행되도록 하자.
풀이
function pipe(...funcs) { return function(num){ let result = num; for(i=0;i<func.length;i++){ result = result[i](result) } return result; } }
깨달은 점
- spread syntax를 사용할 수 있는 기회였다. 함수나 배열 등 같은 종류의 변수가 들어올 때는 자주 떠올려보자.
- 기존의 매개변수를 새로운 변수에 재할당하는 것은 언제나 어색하다.