클로저란 자바스크립트의 함수가 가지는 특징으로써 함수 내부에서 선언된 변수를 함수 외부에서도 접근 가능하게 해주는 메커니즘이다. 이를 통해 변수의 값을 유지하거나 함수의 실행결과를 유지할 수 있기 때문에 함수형 프로그래밍에서 자주 사용된다. 이러한 점은 자바스크립트의 비동기 처리 할 때 매우 유용하게 사용된다.
클로저는 주로 다음과 같은 상황에서 사용된다.
함수 내부에서 선언된 변수를 외부에서 접근해야 할 때,
함수 내부에서 선언된 변수의 값을 계속 유지해야 할 때,
콜백 함수 등에서 함수 외부의 변수에 접근해야 할 때
하지만 클로저를 남발하게 될시 메모리 누수 등의 문제가 발생할 수 있으므로 클로저를 사용할 때에는 메모리 관리에 대한 이해와 적절한 사용이 필요하다.
예시)
function outerFunction(x){
var y = 10
function innerFunction(){
console.log(x + y)
}
return innerFunction
}
var result = outerFunction(5)
result()
// 15