Closure 정리

이종원·2020년 9월 19일
0

클로저란 외부 함수의 변수에 접근할 수 있는 내부 함수
클로저 함수 안에서는 지역 변수, 외부함수의 변수, 전역 변수에 접근이 전부 가능함

예제

커링: 함수 하나가 n개의 인자를 받는 대신 n개의 함수를 만들어 각각 인자를 받게 하는 방법

function adder(x) {     // x = 2
  return function(y) { // y = 3
    return x + y      // 2 + 3 = 5
   }
 }
 adder(2)(3) // 5
 
 let add100 = adder(100) x의 값을 고정해놓고 재사용이 가능함, 함수를 생성하는 함수
 add100(2) // 102
 add100(10) // 110
 
 let add5 = adder(5)
 add5(2) // 7

클로저 모듈 패턴 : 변수를 스코프 안쪽에 가두어 함수 밖으로 노출 시키기 않는 방법

function makeCounter() {
 let privateCounter = 0;
 return {
   increment: function() {
     privateCounter++;
   },
   decrement: function() {
     privateCounter--;
   },
   getValue: function() {
     return privateCounter;
   }
 }
}
let counter1 = makeCounter();
counter1.increment();
counter1.increment();
counter1.getValue();                    // 2
let counter2 = makeCounter();
counter2.increment();
counter2.decrement();
counter2.increment();
counter2.getValue();                   // 1

0개의 댓글