[JavaScript] 실행컨택스트 (Execution Context) - 1
아래 내용은 코어자바스크립트를 참고하여 정리한 내용으로, 대부분의 내용과 사진의 출처는
<코어자바스크립트 저자 정재남 출판 위키복스>입니다!
실행 컨텍스트란 실행할 코드에 제공할 환경정보를 모아놓은 객체로, 자바스크립트의 동적 언어로서의 성격을 잘 파악할 수 있는 개념이다. 실행 컨텍스트는 호이스팅과 클로저를 공부하기 전 알아두면 좋은 개념이라 정리해두려고 한다.
아래 내용은 코어자바스크립트를 참고하여 정리한 내용으로, 대부분의 내용과 사진의 출처는
<코어자바스크립트 저자 정재남 출판 위키복스>입니다!
실행 컨텍스트란 실행할 코드에 제공할 환경정보를 모아놓은 객체로, 자바스크립트의 동적 언어로서의 성격을 잘 파악할 수 있는 개념이다. 실행 컨텍스트는 호이스팅과 클로저를 공부하기 전 알아두면 좋은 개념이라 정리해두려고 한다.

💡 [코어자바스크립트-정재남, 위키북스]를 참고&인용하여 블로그를 작성했습니다.
클로저는 여러 함수형 프로그래밍 언어에서 등장하는 보편적인 특성이다. 자바스크립트만의 고유한 개념이 아니라 ECMAScript 명세에서도 클로저를 따로 정의하지 않는다.

MDN에서는 클로저에 대해 다음과 같이 설명한다.
A closure is the combination of a function bundled together (enclosed) with references to its surrounding state (the lexical environment). In other words, a closure gives you access to an outer function’s scope from an inner function. In JavaScript, closures are created every time a function is created, at function creation time.
클로저는 함수와 함수가 선언된 당시의 lexical environment의 조합이다. 즉, 클로저는 내부 함수가 외부 함수의 스코프에 접근할 수 있게 해주는 것을 의미한다. 자바스크립트에서 함수가 생성될 때마다 함수가 생성된 시점에 클로저가 함께 생성된다. 클로저를 이해하려면 자바스크립트가 어떻게 변수의 유효범위를 지정하는지(Lexical scoping)를 먼저 이해해야 한다.