대답할 수 있는 질문들
클로저란 무엇인가요?
클로저를 사용하는 이유는 무엇인가요?
클로저의 대표 활용 패턴은 무엇이 있나요?
1. 클로저의 의미
2. 클로저 작동 원리
3. 클로저 활용 패턴
3.1 콜백함수 내부에서 외부 데이터를 사용하고자 할 때
3.2 접근 권한 제어 (정보은닉)
- private 변수와 public 변수를 함수 차원에서 구분
3.3 부분 적용 함수
n 개의 인자를 받는 함수에 미리 m개의 인자만 넘겨 변수로 기억해두었다가 필요시에 (n-m)개의 나머지 인자를 넘겨서 비로소 원래 함수를 실행하도록 하는 것
- bind 메소드를 사용하는 것 자체가 부분 적용 함수
- 실무에서의 debounce 사례
3.4 커링
여러개의 인자를 받는 함수를 하나의 인자만 받는 함수로 나누어서 순차적으로 호출될 수 있는 체인 형태로 함수를 구성한 것
- 부분 적용 함수와 다른 점
- 커링함수는 한 번에 하나의 인자를 전달하는 것이 원칙
- 커링 함수의 중간 과정은 인자를 받기 위해 대기하는 것이고, 실제 원본함수는 모든 인자를 받는 마지막에 1번 실행된다.
- 화살표함수로 가독성을 증가시켜 활용할 수 있다.
- 마지막 인자가 넘어갈 때까지 함수 실행을 미루기 때문에, 지연실행(원하는 시점까지 지연시켰다가 실행 가능하다는 점)을 활용할 수 있다.
- 사례
- HTTP요청 시 baseUrl, path, id 를 각각 받는 커링 함수 구현
- 라이브러리, 프레임워크 등에서 광범위하게 사용
- redux 미들웨어?