const adder = function() {
let x = 2;
return function(y) {
return x + y;
}
}
adder(3); // 5
adder(5); // 7
클로저가 가장 유용하게 사용되는 상황은 현재 상태를 기억하고 변경된 최신 상태를 유지하는 것이다.
토글 기능을 아래와 같이 클로저를 활용하여 구현할 수 있다.
const toggle = function () {
let isShow = false;
return function () {
box.style.display = isShow ? 'block' : 'none';
isShow = !isShow;
}
}
외부 함수에 변수를 선언하여, 함수 내부에서만 변수에 접근할 수 있도록 한다.
이를 통해 의도되지 않은 변경을 걱정할 필요 없이 안정적으로 프로그래밍이 가능하다.
클로저는 사실 자바스크립트의 어떤 함수든 가지고 있다고 볼 수 있다.
어떤 함수든 전역 변수에 접근할 수 있기 때문이다.
자바스크립트에서 private 메서드를 구현하기 위해서도 클로저를 활용할 수 있다. 클로저 내에 있는 변수는 외부에서 접근할 수 없기 때문에, 클로져 내에 있는 변수를 활용 할 수 있는 private 메서드만 따로 노출시켜서 인터페이스처럼 사용할 수 있다.