javascript 실행 컨텍스트란?

김재우·2022년 12월 12일

javascipt

목록 보기
1/1
post-thumbnail

실행 컨텍스트란 ?

실행 컨텍스트란 무엇인가?
코드를 실행하는데에 필요한 배경이 되는 조건/환경
동일한 조건/환경을 지니는 코드 뭉치를 실행할 때 필요한 조건/ 환경 정보 = 실행 컨텍스트

자바스크립트에서는 동일한 조건 지니는것은 딱 4가지가 있다.

전역공간
함수
eval
module
(eval 은 여러 문제를 야기하는 몹시 위험한 명령어라서 논외로 하고보면)
전역공간,함수,module이 있다.

결국 동일한 조건/환경을 지니는 코드 뭉치는 함수라고 볼 수 있다.
전역 공간, 모듈 또는 함수로 묶인 내부에서는 = 같은 환경 안에 있다라는게 성립된다.

if/for/switch/while 문은 ? => ES6에서 블록스코프 개념이 추가되면서 let과 cosnt 에 대해서 별개의 독립된 공간으로서 역할을 하고는 있지만 별개의 실행 컨텍스트를 실행할지는 않는다.!

Execution Context를 한마디로 정의하면?

함수를 실행할 때 필요한 조건, 환경 정보를 담은 객체!

var a =1;
funtion outer(){
  console.log(a);
  
  funtion inner() {
 	console.log(a);
    var a =3;
  }
  inner();
  
  console.log(a);
  
}
outer();
console.log(a);

위의 식에서 가장 먼저 실행되는 순서부터 나열하자면 ?
이것을 알면 실행 컨텍스트의 이해도가 빠를것이다.

javascript 는 위에서 아래부터 차례대로 쭉 읽으면서 내려오는데..

funtion {
....
}
부분은 선언이기 때문에 넘어가고 가장 먼저 outer(); 함수가 실행되기 때문에 outer 안에 있는 console.log(a) 가 실행 된다 그 후에 function inner 선언이 되고 난 후 inner() 함수가 실행 되면서 console.log(a)가 또 찍힌다 inner() 함수가 실행 된 후에 console.log(a)가 또 실행이 되고 마지막으로 모든 함수의 console.log(a)가 실행이 된 후 마지막 4번째 console.log(a)가 찍힐것이다.

실행컨텍스트의 내부를 살펴보면?


VariableEnvironment 에는 식별자 정보 수집
LexicalEnvironment 에는 각 식별자의 "데이터" 추적
컨텍스트 내부 코드들을 실행하는 동안에 값의 변화는 LexicalEnvironment에만 반영 된다.

Lexical Environment란?

어휘적/사전적 환경이라고 하는데, 실행컨텍스트를 구성하는 환경 정보들을 모아 사전처럼 구성한 객체!
-environmentRecord: 현재 문맥의 식별자
outerEnvironmentReference: 현재 문맥의 관련있는 외부 식별자 정보

profile
프론트엔드 꾸준개발자입니다.

0개의 댓글