[TIL] 콜스택/ 호이스팅/스코프 체이닝

라형선·2023년 5월 9일
0

10분 테코톡: 하루님의 실행 컨텍스트 Click

콜스택

콜스택(Call Stack)은 프로그램에서 함수 호출을 추적하는 데 사용되는 자료 구조입니다. 함수가 호출될 때마다 해당 함수의 실행에 필요한 모든 정보(매개변수, 지역변수, 반환 주소 등)가 스택 메모리에 저장됩니다.
자바스크립트 엔진은 코드를 실행시키면 콜스택이라는 곳에 전역 실행 컨텍스트를 담는다. 마지막에 담긴 실행컨텍스트를 A함수라고 하자 함수 A에서 함수 B가 호출되면 또 실행컨텍스트를 담는다. 함수 B가 실행되고 종료되면 콜스택에서 사라진다.

호이스팅

선언라인 전에 변수를 참조할 수 있는 현상
자바스크립트 엔진이 전체코드를 스캔하면서 변수같은 정보를 실행컨텍스트 환경레코드에 기록해 놓기 때문.

환경레코드

식별자와 식별자에 바인딩 된 값을 기록

생성단계

전체코드를 스캔하고 선언 할 것이 있는지 찾아보고 있다면 선언한다. 실행컨택스트를 생성하고, 선언문만 먼저 실행해서 환경레코드에 기록

실행단계

선언문 외 나머지 코드를 순차적으로 실행 환경 ㄹ레코드를 참조하거나 업데이트

일시적 사각지대 (TDZ)

let const로 선언했을 때, 선언 이전에 식별자를 참조할 수 없는 구역
var는 선언, 초기화를 동시에 한다. {youTube : undefined}
반면 let const와 같은 경우에는 선언만 해둔다 {youTube }
선언: 메모리 공간을 확보하고 식별자와 연결
초기화: 식별자에 암묵적으로 undefined 값 바인딩
선언 전에는 변수를 참조할 수 없다는 일반적인 프로그래밍 방식을 추구할 수 있도록 언어 차원에서 보완되었다고 볼 수 있다.

함수 호이스팅

함수 표현식

var game = () =>{}          {game : undefined}
let/ const game = () => {}  {game : f{}  }

환경레코드에 기록된 값이 없어 reference오류 발생

함수 선언문

function Game () {}

{Game : f()}

선언과 동시에 함수가 생성되어 선언 전에도 함수를 사용할 수 있음

Outer 외부 환경 참조
Outer Evireonment Reference
바깥 Lexical Evironment를 가르킴

스코프

스코프는 변수 및 함수에 대한 접근 권한을 정의한다.
전역 스코프 : 코드의 어느 곳에서나 접근할 수 있는 변수 및 함수를 정의합니다.
지역 스코프 : 해당 지역 블록 내에서만 접근할 수 있는 변수 및 함수를 정의합니다.

스코프 체인

식별자를 결정할 때 활용하는 스코프들의 연결리스트
JavaScript에서 변수를 참조할 때 검색되는 스코프의 계층 구조를 의미한다.
변수가 현재 스코프에서 찾을 수 없으면 JavaScript는 스코프 체인을 따라 변수를 검색하고, 가장 먼저 발견한 변수를 사용합니다.
이러한 방식으로, 스코프 체인은 코드에서 변수가 사용 가능한 범위를 결정하며, 변수의 유효 범위를 제어합니다.
스코프 체이닝 :

실행 컨텍스트

코드를 실행하는데 필요한 환경(조건, 상태)을 제공하는 객체

profile
형선

0개의 댓글