클로저란, 외부함수 안에 내부함수가 리턴되었어도 여전히 외부함수의 변수가 살아있는(?) 현상을 말하는 것으로 알고 있다.
스코프 확인, 리턴되어도 외부함수를 사용할 수 있다.
function outerFn() {
let a = 10;
return function innerFn() {
let b = 20;
return function deepFn() {
let sum = a + b + g;
console.log(sum);
};
};
}
let g = 30;
outerFn()()(); // 60
클로저 기능 중 대표적인 것이 커링이다.
커링 : 함수 하나가 n개의 인자를 받는 대신, n개의 함수를 만들어 각각 인자를 받게하는 방식.
function add(x) {
return function(y) {
return x + y;
};
}
let tenAdd = add(10);
console.log(tenAdd(5)); // 15
console.log(tenAdd(30)); // 40
변수를 함수밖으로 노출시키지 않게 할 때도 사용된다.
function makeCounter() {
let privateNum = 0;
return {
add: function() {
privateNum++;
},
minus: function() {
privateNum--;
},
getPrivateNum: function() {
return privateNum;
}
};
}
'programming > javascript' 카테고리의 다른 글
맥,win10 mysql 실행방법 (0) | 2019.11.26 |
---|---|
[JS] destructuring 응용 예제 코드 (0) | 2019.11.16 |
prettier 설정 (vscode mac) (0) | 2019.11.16 |
[JS] 객체 차집합 만들기 예제 코드 (0) | 2019.11.16 |
Arrow Function, function() 의 this 차이 예제 코드 (0) | 2019.11.16 |