ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 6. 실행 컨텍스트(스코프, 변수, 객체, 호이스팅), 콜 스택
    JavaScript/3주차-데이터타입, 실행컨텍스트, this 2023. 5. 25. 17:41

     

     

    실행컨텍스트 : 실행할 코드에 제공할 환경정보를 모아놓은 객체

     

    실행컨텍스트의 역할 3가지

     

    1. 호이스팅 (hoisting) : 선언된 변수를 위로 끌어올림

    2. 외부 환경 정보 구성

    3. this 값 설정 

     

    콜 스택

    스택(Stack)과 항상 비교되는 것은 큐(Queue)

    Stack : Last In, First Out = LIFO (마지막에 들어온게 처음으로 나간다.)

     

    Queue: First In, First Out = FIFO (처음으로 들어온게 처음으로 나간다)

     

    콜 스택에서는 스택(Stack) 방식을 따른다.

    실행 컨텍스트란 실행할 코드에 제공할 환경 정보들을 모아놓은 객체. 그 객체. 즉, 동일 환경에 있는 코드를 실행할 때 필요한 환경 정보들을 모아 컨텍스트를 구성하고 이것을 위에서 설명한 ‘스택’의 한 종류인 콜스택에 쌓아 올린다. 가장 위에 쌓여있는 컨텍스트와 관련된 코드를 실행하는 방법으로 코드의 환경 및 순서를 보장할 수 있다.

     

    // ---- 1번
    var a = 1;
    function outer() {
    	function inner() {
    		console.log(a); //undefined
    		var a = 3;
    	}
    	inner(); // ---- 2번
    	console.log(a);
    }
    outer(); // ---- 3번
    console.log(a);

    코드실행 순서

    맨아래에서 두번째 줄 outer();에서 가장 먼저 실행 → function outer( ) 실행 → 밑에서 4번쨰 줄 inner(); 에서 실행 → function inner() 실행 → console 실행

     

    코드실행 → 전역(in) → 전역(중단) + outer(in) → outer(중단) + inner(in) → inner(out) + outer(재개) → outer(out) + 전역(재개) → 전역(out) → 코드종료

     

    실행 컨텍스트가 생성되는 (활성화되는) 시점이 콜 스택의 맨 위에 쌓이는 (노출되는) 순간을 의미하며, 곧, 현재 실행할 코드에 해당 실행 컨텍스트가 관여하게 되는 시점을 의미한다.

     

    댓글

Designed by Tistory.