BFE.dev 해답 레코드 #1 implement curry()

4332 단어 JavaScript
https://bfe.dev/ja는 프론트 엔드 버전의 리코더로, GAFA 면접을 본다면 연습하는 것이 좋다.
다음은 저의 연습 기록입니다.

첫 번째 질문#1 implement curry()
먼저 샘플 코드에서 input/output 결정하기
const  join = (a, b, c) => {
   return `${a}_${b}_${c}`
}

const curriedJoin = curry(join)

curriedJoin(1, 2, 3) // '1_2_3'

curriedJoin(1)(2, 3) // '1_2_3'

curriedJoin(1, 2)(3) // '1_2_3'
위에서 보면 curry()function을 되돌려주고 임의의 수량의 매개 변수를 전달할 수 있다.function 자체는 다음과 같다.
1. 파라미터가 충분할 때join을 실행하고 결과를 되돌려줍니다
2. 매개 변수가 부족하면 새로운function을 반환하고 1 반복
2번이 중요해요.curriedJoin(1,2) 되돌아오는 function은 전달된 매개 변수를 전달하기 전에 insert 1과 2가 필요합니다.이것은'Function.prototype.bind()로 갈 수 있다.
function curry(func) {
  return function curried(...args) {
    // 1. if enough args, call func 
    // 2. if not enough, bind the args and wait for new one
    if (args.length >= func.length) {
      return func.apply(this, args)
    } else {
      return curried.bind(this, ...args)
    }
  }
}
좋아, 통과했어!

첫 번째 문제는 간단하니까 관심 있으면 같이 연습https://bfe.dev합시다.

좋은 웹페이지 즐겨찾기