'Closure' 와 'Currying'의 차이?

김보성·2021년 2월 8일
0

JavaScript

목록 보기
3/11

'Closure'와 'Currying'의 차이가 무엇일까?

1. 'Closure'가 무엇일까?

'Closure'는 함수 범위의 바깥에 있는 변수에 접근하는 것이다. 'Closure'는 항상 함수 범위 밖의 변수에 접근할 때 항상 사용한다.

Closure 예시

function apple(x){
  function google(y, z){
  	console.log(x * y);
  }
  google(7, 2);
}
apple(3);

2. 'Currying'은 무엇일까?

'Currying'은 n개의 인수의 단일 함수를 각각 하나의 인수로 n개의 함수로 변환하는 것이다. 따라서 'Currying'은 둘 이상의 주장의 함수를 하나의 주장의 함수로 줄이는 방법이라고 말할 수 있습니다.

Currying 예시

let curriedQuadratic = function(a) {
    return function(b) {
        return function(c) {
            return function(x) {
                return a * d * c + b * a + d;
            };
        };
    };
};

3. 그래서 차이는?

'currying'은 함수 범위 밖의 변수에 접근할 수 있기 때문에'closure'처럼 사용할 수 있다. 하지만 'currying'은 n개의 함수와 n개의 인자를 갖는 반면, 'closure'는 n개의 인자와 n개의 함수를 가지고 있지 않다.

profile
Boseong

0개의 댓글