[JavaScript스터디] 실행 컨텍스트와 클로저

G-NOTE·2022년 8월 9일
0

항해99

목록 보기
28/36

실행 컨텍스트

실행 컨텍스트란, 실행 가능한 코드(전역 코드, 함수 코드)가 실행되기 위해 필요한 환경

실행 컨텍스트는 물리적으로 객체의 형태이다.

실행 컨텍스트의 프로퍼티

  • 변수객체
    전역 코드 실행 시 생성되는 전역 컨텍스트와 함수를 실행할 때 생성되는 함수 컨텍스트가 가리키는 객체가 다르다.

클로저

클로저란 함수와 그 함수가 선언됐을 때의 렉시컬 환경(Lexical environment)과의 조합이다.

자신을 포함하고 있는 외부함수보다 내부함수가 더 오래 유지되는 경우, 외부 함수 밖에서 내부함수가 호출되더라도 외부함수의 지역 변수에 접근할 수 있는데 이러한 함수를 클로저(Closure)라고 부른다.

function outerFunc() {
  var x = 10;
  var innerFunc = function () { console.log(x); };
  return innerFunc;
}

// 함수 outerFunc를 호출하면 내부 함수 innerFunc가 반환된다.
// 그리고 함수 outerFunc의 실행 컨텍스트는 소멸한다.
var inner = outerFunc();
inner(); // 10

클로저가 실행컨텍스트에서 이미 빠져버린, 자신을 포함하는 외부함수의 지역 변수를 기억할 수 있는 이유는 클로저는 반환된 내부함수가 자신이 선언되었을 때의 환경(렉시컬 환경)인 스코프를 기억해서 자신이 선언되었을 때의 환경(스코프) 밖에서 호출되어도 그 스코프에 접근할 수 있다.

클로저의 활용

  1. 상태 유지
  • 현재 상태를 기억하고 변경된 최신 상태를 유지하는 것
  1. 전역 변수 사용 억제
  2. 정보 은닉

참조

https://poiemaweb.com/js-closure

profile
FE Developer

0개의 댓글