앞서 공부한 스코프와 스코프체인을 생각하면, 클로저에 대해서 쉽게 알 수 있다.
function outer(){
var b = 'B';
function inner(){
console.log(b);
}
return inner
}
var someFunc = outer();
someFunc();
// console => 'B'
위의 코드와 같이 inner함수가 리턴이 됨과 동시에 var b = 'B'라는 변수는 사라져야하지만, someFunc()를 실행시키면 콘솔에는 'B'가 찍히는 것을 알 수 있다.
이러한 것이 바로 클로저이다. (생성한 시점에 스코프체인을 계속 들고 있는다고 생각하면 쉽게 이해가 된다.) 따라서 outer()가 실행된 이후에도, outer의 스코프에 계속 접근이 가능하기 때문에 이러한 결과가 나온것이다.