Language/javascript

자바스크립트의 실행 컨텍스트, 렉시컬 환경, 스코프

도잎 2023. 1. 1. 23:18
반응형

실행 컨텍스트는 자바스크립트의 동작 원리를 담고 있는 핵심 개념으로 실행 가능한 코드가 실행되기 위해 필요한 환경이라고 말할 수 있다. 이에 따라 호이스팅, 클로저, 스코프 등의 개념 등을 이해할 수 있게 된다.

 

실행 가능한 코드(소스 코드)

  • 전역코드 : 전역에 존재하는 코드
  • 함수코드 : 함수 내에 존재하는 코드로 지역 스코프를 생성하고 지역변수, 매개변수 등을 관리한다.
  • Eval 코드 : strict mod에서 자신만의 독자적인 스코프 생성
  • 모듈 코드 : 모듈별로 독립적인 모듈 스코프 생성

 

해당 4가지의 실행 가능한 코드를 평가하여 실행 컨텍스트를 생성한다. 소스코드는 실행되기 이전에 평가 과정을 거치며 평가와 실행 두가지 단계로 나뉜다고 볼 수 있다.

 

렉시컬 환경

렉시컬 환경은 환경레코드, 외부렉시컬 환경으로 구성되는데 특정 코드가 작성되고 선언된 환경을 의미한다.

 

  • 환경레코드 : 렉시컬 환경에서 모든 지역변수를 프로퍼티로 저장하고 있는 객체, 스코프에 포함된 식별자를 등록하고 등록된 식별자에 바인딩된 값을 관리하는 저장소
  • 외부 렉시컬 환경 : 외부 코드와 연관된 환경

 

스코프(전역과 지역)

스코프는 변수에 접근할 수 있는 범위를 의미하는데 유효범위에 따라 크게는 전역 스코프와 지역 스코프로 나뉠 수 있다.

 

구분 설명 스코프 변수
전역 코드의 가장 바깥 영역 전역 스코프 전역 변수
지역 함수 몸체 내부 지역 스코프 지역 변수

 

// 전역 스코프와 전역 변수들
const a = 'Lia';
const b = 'Minsu';

function hello() {
    // 지역스코프 내의 지역 변수
    const c = 'Leo';
    
    function inner() {
        // 지역스코프 안의 지역스코프의 지역 변수
        const d = 'Cat';
    }
    
    inner();
}

hello();

 

 

위의 예제처럼 크게는 전역 스코프와 지역 스코프로 나뉠 수 있지만 지역 스코프와 관련하여 블록 레벨 스코프, 함수 레벨 스코프 등의 개념들이 따라 나올 수 있다. 블록 레벨 스코프의 경우에는 함수를 포함한 모든 코드 블록에 의해서 지역 스코프가 생성되지만 함수 레벨 스코프는 코드 블록이 아닌 함수에 의해서만 지역 스코프가 생성된다는 특징을 가지고 있다. 아래 글에서 좀 더 자세하게 살펴볼 수 있다.

 

2022.11.25 - [웹개발/Javascript] - 전역변수의 문제점, 어떤 문제가 발생할까?(블록 레벨 스코프와 함수 레벨 스코프)

 

전역변수의 문제점, 어떤 문제가 발생할까?(블록 레벨 스코프와 함수 레벨 스코프)

우리가 사용할 변수를 선언할 때, 전역 변수로 선언하거나 지역변수로 선언해 사용하는 방법이 있다. 전역 변수와 지역변수의 개념에 대해서 잘 모를 때는 그냥 아무렇게나 사용했었는데 다시

choijying21.tistory.com

 

반응형