본문 바로가기

Javascript

9. closure 클로저

클로저 : 외부 함수의 변수에 접근할 수 있는 내부 함수


-> 안쪽에선 바깥쪽 모두다 참조가 가능하다. 그러므로 총 3개에 접근 가능 하다. 

클로저 함수 : 외부 함수의 변수에 접근할  있는 내부 함수

->함수 outerFn(); 호출 하면 먼저 console.log(outerVar)먼저 해주고,   실행되지 않은 innerFn함수를 리턴합니다.

 

-> 1번 : outer 와 inner이 출력된다. // ()()괄호가 두개 이면 바깥함수와 안쪽 함수 둘다 호출 하는것이다. 

-> 2번 : outer 이 출력된다.  // outerFn(); 할경우 outerFn이 출력되고 innerFn은 그냥 리턴된다. 근데 그것을 innerFn변수에 담으면 리턴 innerFn은 리턴되지 않는다. 

-> 3번 : inner 이 출력된다.  // 위에서 innerFn에 리턴되지 않은 innerFn()함수를 담았으므로 innerFn()함수가 실행되면서 innerFn을 출력한다. 

 

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

-> adder(2)(3)을 호출하면 x에 2 y에 3이 들어간다.

커링을 사용하는 이유는 값을 고정 해놓고 사용이 가능해진다. 

이런식으로 함수의 값을 고정해놓고 사용 할 수 있다. ! 

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

-> 객체를 사용 하는것과 비슷하다. counter1 에 makeCounter()을 초기화 하고 , 변수counter1.increment();를 하면 객체에 키 값을 불러오듯 privateCounter ++ 값을 실행한다. 두번 실행하고 리턴하는 키 getValue를 counter1.getValue();를 하면 위에서 두번 ++ 했으로 최종값 2 출력이된다. 

'Javascript' 카테고리의 다른 글

11. 매개변수  (0) 2020.09.18
10. 객체지향  (0) 2020.09.18
8. scope  (0) 2020.09.15
7.객체  (0) 2020.09.12
6. 배열  (0) 2020.09.10