클로져란
함수에 함수나 변수를 선언 후 해당 값을 함수나,변수,object로 리턴하여 외부에서 return 된 값을 참조하여 사용
함수 리턴 예제
- increase 함수를 리턴하여 해당 함수를 실행 하면 실행한 만큼 count 값이 증가 되어 콘솔에 찍힌다. 아래 는 3번 호출 하여 3이 콘솔에 출력된다.
let closureCounter = () => {
let count = 0;
let increase = () => {
count++;
console.log('count', count);
};
return increase;
};
let increase = closureCounter();
increase();
increase();
increase();
object 리턴 예제
- closureUserInfo 함수에서 object형태로 2개의 함수를 리턴하면 외부에서 아래와 같이 호출이 가능 하다
let closureUserInfo = (name, age) => {
let printName = `이름은 ${name} 입니다.`;
let printAge = `나이는 ${age} 입니다. `;
function showName() {
console.log(printName);
}
function showAge() {
console.log(printAge);
}
return {
showName,
showAge
};
};
let userInfoInstance = closureUserInfo('jaewon', 37);
userInfoInstance.showName();
userInfoInstance.showAge();