“Closures are nothing but FUNCTIONS WITH PRESERVED DATA”
var addTo = function(passed) {
var add = function(inner) {
return passed + inner;
}
return add;
}
var addToFive = addTo(5); // 8
var addToThree = addTo(3); // 6
함수 내부에 또 하나의 함수를 정의하면 내부 함수는 외부 함수의 렉시컬 스코프에 접근이 가능해진다.
이후 외부 함수의 실행이 끝나더라도 내부 함수는 계속해서 외부 함수의 렉시컬 스코프에 접근할 수 있는데 이 영역을 클로져라고 한다.
보통 프라이벗한 데이터를 사용할 때 사용하고, 메모리 누수에 주의 해야한다.
## Resource
https://www.youtube.com/watch?v=71AtaJpJHw0
https://opentutorials.org/course/743/6544
https://medium.com/javascript-scene/master-the-javascript-interview-what-is-a-closure-b2f0d2152b36