클로저는 내부 함수에서 외부 함수에 있는 상태에 접근할 수 있는 권하을 주는 것을 의미한다.

Closures는 무언가를 페쇄하다, 닫는다라는 의미를 가지고 있다고 생각하고 클로저에 대한 개념을 접근 조금 더 수월하다.

function outer()부터 lexical 환경이 만들어진다.
그럼 outer()를 호출하는 순간 무슨 일이 일어날까?
outer 스코프 lexical 환경이 만들어진다. 그리고 outer 환경에 어떤 내용이 있는지 확인 후, 이를 환경에 레코드하는 것이다. 이미지에서는 x = 0 변수가 outer lexical 환경에 레코드 되는 것이다.
다음은 inner 함수를 발견해서 inner 스코프가 만들어진다. 그리고 inner scope는 outer scope를 참조할 수 있어서 x의 값은 0으로 결정한다.
inner() 함수가 호출이되고 끝나는 순간 inner 함수는 이제 종료되는 것이다. outer()를 호출했을 때도 동일하다.

Scope 이미지랑 뭐가 다른지 보이시나요?
Closures의 의미는 페쇄, 닫히는 느낌으로 알 수 있다.
클로저는 환경에 대한 조합을 의미하고, inner scope가 outer scope에 접근할 수 있는 것을 의미한다.