📍 클로저
외부 함수의 변수에 접근할 수 있는 내부 함수
function outerFn(){
let outerVar = 'outer';
console.log(outerVar);
function innerFn(){
let innerVar = 'inner';
console.log(innerVar);
}
return innerFn;
}
1) outerF()();
-> 1번 : outer 와 inner이 출력된다. // ()()괄호가 두개 이면 바깥함수와 안쪽 함수 둘다 호출 하는것이다.
2) let innerFn = outerFn();
-> 2번 : outer 이 출력된다. // outerFn(); 할경우 outerFn이 출력되고 innerFn은 그냥 리턴된다. 근데 그것을 innerFn변수에 담으면 리턴 innerFn은 리턴되지 않는다
3)innerFn();
-> 3번 : inner 이 출력된다. // 위에서 innerFn에 리턴되지 않은 innerFn()함수를 담았으므로 innerFn()함수가 실행되면서 innerFn을 출력한다.
📍커링
함수 하나가 n개의 인자를 받는 대신 n개의 함수를 만들어 각각 인자를 받게 하는 방법
function adder(x){
return function(y){
return x+y;
}
}
adder(2)(3); //5
-> x에2가 y에 3이 들어갔다.