Closure is when a function is able to access its lexical scope, even when that function is executing outside its lexical scope.
클로져는 Data Privacy를 위해서 사용되는 메커니즘이다. 함수가 생성될 때 클로저가 함께 생성된다.
사전적 정의를 살펴보면 Lexical Environment와 함수의 조합이라고 나와있는데, 말 그대로다. 클로저는 결국 Lexical Scope와 관련이 있다. Lexical Scope덕분에 내부함수에서 외부함수의 스코프에 접근을 할 수 있기 때문이다.
클로저를 사용하기 위해서는, 외부함수안에 내부함수를 만들고 그 내부함수를 리턴하면 된다. 이 때 외부함수가 리턴된 후에도 내부함수는 외부함수의 스코프에 접근을 할 수있는데, 리턴되는 함수의 execution context
를 기억하고 있기 때문이다.
function makeFunc() {
const name = 'Mozilla';
function displayName() {
alert(name);
}
return displayName;
}
const counter = () => {
const count = 0;
return () => count++;
}
const getSecret = (secret) => {
return {
get: () => secret
};
};