Currying과 Closure를 연관지어서 설명해주세요.
currying 이란?
여러 개의 인자를 가진 함수를 호출할 경우, 파라미터의 수보다 적은 수의 파라미터를 인자로 받으면 누락된 파라미터를 인자로 받는 기법
=> 함수 하나가 N개의 인자를 받는 과정을 n개의 함수로 각각의 인자를 받도록 하는 것.
// curring
function add(a){
console.log(`${a}`);
return function(b){
console.log(`${a} + ${b}`);
return a+b;
}
}
// add(1)(2);
이때 add(1)이 선언되는 순간, 위의 함수가 return하는 익명함수는 closure가 되어서,
자신의 실행환경을 기억하는 상태로 동작하기 때문이다.
커링을 사용하면서 장점은, 함수로 "단계"를 나눌 수 있어서 유지보수와 재사용성이 높아진다는 점이다. (어느정도는)
단점은 상위 렉시컬을 참조하므로, 그 depth가 깊어진다면 렉시컬 환경간의 충돌이 일어날 수 있겠다는 생각을 했다. (마치 전역변수)
'개발 > FrontEnd Interview' 카테고리의 다른 글
SPA과 CSR은 같은 건가요? (0) | 2021.06.19 |
---|---|
URI vs URL vs URN (0) | 2021.06.19 |
코드 스플리팅이란? (2) | 2021.06.19 |
자바스크립트는 왜 부동소수점의 정확성이 떨어질까? (0) | 2021.06.19 |
우테코 subway-map 학습로그 (0) | 2021.06.16 |