TIL 5/24 실행컨텍스트 호이스팅

2023. 5. 25. 22:46Dev/TIL WIL

https://devdox.tistory.com/154

 

javascript 실행 컨텍스트, 콜스택, 호이스팅

자바스크립트의 실행 컨텍스트란? 실행할 코드에 제공할 환경 정보들을 모아놓은 객체 어떤 실행 컨텍스트가 활성화되는 시점에 다음과 같은 일을 한다. 1. 호이스팅( 선언된 변수를 위로 끌어

devdox.tistory.com

 

 

오늘은 js 엔진의 구동 방식

 

실행 컨텍스트와 콜스택 호이스팅에 대해 학습했다.

 

각 실행 컨텍스트의 LexicalEnvironment의 record에 의해 발생하는 가상개념인 호이스팅 학습중 

 

변수를 선언하는 3가지 방법 중 재선언과 재할당이 가능한 var에 대해서는 이해했지만

 

찾아보니 var let const의 선언 할당 실행부분의 차이가 존재했다.

 

기존에 알던대로 var 키워드는 함수 레벨의 스코프를 갖고(함수 내에서 선언해야 지역스코프)

 

let과 const는 블록 수준의 스코프를 갖는다.( 모든 코드블록에서 지역스코프) 

 

자바스크립트 변수 생성 과정에서 3가지 단게를 거치는데

 

선언과 초기화 그리고 할당으로 나뉜다.

 

선언과 할당은 알았지만 초기화라는 과정이 생소했다.

 

초기화(initialization)과정은 변수 객체 값을 위한 공간을 메모리에 할당하는 과정으로 이 때 할당되는 값은 'undefined'이다.

 

var키워드는 선언과 동시에 초기화가 이뤄진다( 선언과 동시에 undefined가 할당된다)

 

const 키워드는 선언 동시에 초기화가 이루어져야 한다( 선언만 하는 건 불가) 

 

하지만 let의 경우 선언만 될 뿐 초기화가 이뤄지지 않는다. 이 단계를 Temporary Dead Zone(TDZ)라고 한다.

 

즉 선언은 되었지만 초기화가 되지 않아 이를 위한 자리가 메모리에 준비돼 있지 않은 상태라는 것이다.

 

 

'Dev > TIL WIL' 카테고리의 다른 글

TIL 6/7 git, storage  (0) 2023.06.08
TIL 6/5 Fetch, promise  (0) 2023.06.06
TIL 5/23 data/memory  (0) 2023.05.24
TIL 5/22 JS ES6 / 구조분해할당  (0) 2023.05.23
5월 3주차 WIL  (0) 2023.05.21