코드/JS

컨텍스트, 스코프 체인

Yeah-Panda 2015. 4. 21. 11:16


컨텍스트란 현재 실행되고 있는 코드를 소유하는 객체에 대한 참조 즉 this 에 대한 참조 다

자바스크립트 언어 환경에서 모든 함수는 생성될때 하나의 스코프 체인을 가진다.
스코프 체인은 함수의 호출과 관련된 여러 객체(기본적으로 글로벌 객체등)의 참조를 저장하는 메모리 공간이다.

스코프체인은 기본적으로 키와 값의 구조로 되어 있으며, 스코프 체인의 안쪽에 들어가는 객체들을 변수 객체라 한다. 생성된 스코프 체인의 내부에는 먼저 전역 객체(Global Object) 가 체인의 안쪽으로 자리잡게 된다. 이 공간을 흔히 전역 컨텍스트 ( Global Context ) 라고 하기도 한다.


javascript 에서 this 란 현재 실행되고 있는 코드를 소유하는 객체, 즉 메모리 공간말하며 context 에 대한 참조다.


함수가 호출되는 시점에 메모리에는 함수의 실행 영역 이 생성되며, 모든 함수는 하나의 실행 영역를 가지고 있다.

자바스크립트는 싱글 스레드로 작동하는 언어라서, 브라우져에서 한번에 한가지만 할 수 있다. 자바스크립트 인터프리터가 초기에 코드를 실행할 때는, 기본적으로 글로벌 컨텍스트에서 실행하며 들어간다. 그리고 각 함수가 실행될 때마다 새로운 실행 컨텍스트가 생기게 된다.


“실행 컨텍스트"라는 단어는 실제로 그 의도나 목적들이 스코프에 관련된 것이지 앞에서 이야기한 컨텍스트가 아니여서 혼란이 생긴다. 이런 애매한 명명 규칙은 ECMAScript 스펙에 정의된 단어라서 더 구리다.

새로 실행 컨텍스트가 생길 때마다 스코프체인이라 불리는 곳의 맨 위에 붙게 된다. 브라우져는 항상 스코프체인의 최상위를 실행한다. 한번 완료되면 스택의 맨 위에서 사라지게 되고, 컨트롤은 그 아래의 실행 컨텍스트로 넘어간다.







'코드 > JS' 카테고리의 다른 글

Canvas를 Png 로 서버 저장  (0) 2015.05.22
함수의 프로토타입 속성  (0) 2015.04.21
자바스크립트 배열 중복요소 추출  (0) 2015.04.20
Javascript 끝 문자열 제거  (0) 2015.04.08
jQuery each, map  (0) 2014.05.30