개발공부/BOOKS

[독서] 코어 자바스크립트(2장)

카슈밀 2025. 3. 17. 19:41
반응형

실행컨텍스트란? 실행할 코드에 제공할 환경 정보들을 모아놓은 객체.

 

실행컨텍스트는 기본적으로 stack방식으로 진행되며

그 내부에는 this binding, variable enviroment, lexical enviroment로 구성.

이중 variable enviroment, lexical enviroment 내부에는 enviromentRecord와 hoisting이 들어 있는데,

enviromentRecord 내부에는 식별자(변수명)들이 저장됨.

이때, 호이스팅이 진행되어 사용될 변수, 함수들이 최상으로 끌어올려지게 작동됩니다.

 

해당 내용이 적용되면 코드를 한줄한줄 파서 할때랑 다르게 작동됩니다.

 

함수선언문은 함수표현식과 다르게 해당 내용이 중복될 경우 덧씌워버리지만 에러가 작동되지 않는다.

그러나 표현식의 경우 해당 에러를 출력한다.

 

호이스팅시 해당 문제가 발생해버림.

sayHello(); // "Hello, World!"

function sayHello() {
  console.log("Hello, World!");
}



greet(); // ❌ TypeError: greet is not a function

const greet = function sayHi() {
  console.log("Hi!");
};

greet(); // "Hi!"
sayHi(); // ❌ ReferenceError: sayHi is not defined

 

Outer Environment Reference란?

바로 직전에 있는 외부 환경을 참조하는 역할.

1. 변수 검색 시 상위 스코프로 이동

현재 환경에서 변수를 찾지 못하면, Outer Environment Reference를 따라 상위 스코프로 이동하여 변수 검색을 수행합니다.

2. 스코프 체인을 형성

이 참조를 통해 자바스크립트는 중첩된 함수(Closure)에서도 외부 변수에 접근할 수 있습니다.

let globalVar = "I am global";

function outerFunction() {
  let outerVar = "I am outer";

  function innerFunction() {
    let innerVar = "I am inner";
    
    console.log(innerVar); // ✅ 현재 환경(innerFunction)에서 찾음
    console.log(outerVar); // ✅ outerFunction의 환경에서 찾음 (Outer Environment Reference 사용)
    console.log(globalVar); // ✅ 전역 환경에서 찾음 (Outer Environment Reference 사용)
  }

  innerFunction();
}

outerFunction();

 

스코프는 전역변수와 지역변수로 나누어지는데,

전역변수 = (전역컨텍스트 + LexicalEnviroment)

지역변수 = 함수에 의해 실행되는 변수

728x90

'개발공부 > BOOKS' 카테고리의 다른 글

[독서] 코어자바스크립트 3장  (0) 2025.03.19
[독서] 코어 자바스크립트(1장)  (0) 2025.03.17