클로저에 대해 설명해주세요.
클로저란 함수가 속한 렉시컬 스코프를 기억하여 렉시컬 스코프 밖에서 실행할 때도 그 스코프에 접근할 수 있게 하는 기능입니다.
다시 말해, 외부 함수 호출이 종료되더라도 외부 함수의 지역 변수 및 변수 스코프 객체의 체인 관계를 유지할 수 있는 구조를 클로저라고 합니다.
클로저를 통하여 함수가 리턴되어도 특정값을 가진 변수를 보호하면서 그 변수를 계속 사용할 수 있게 하는 장점이 있습니다.
클로저가 생성되는 조건은 아래와 같습니다.
function outerFunction() {
let outerVariable = "I am from outer function";
function innerFunction() {
console.log(outerVariable);
}
return innerFunction;
}
let closureExample = outerFunction(); // outerFunction 실행 후에 innerFunction을 반환
closureExample(); // outerVariable을 출력