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

2023. 1. 1. 23:18· Language/javascript
목차
  1. 실행 가능한 코드(소스 코드)
  2. 렉시컬 환경
  3. 스코프(전역과 지역)
반응형

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

 

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

  • 전역코드 : 전역에 존재하는 코드
  • 함수코드 : 함수 내에 존재하는 코드로 지역 스코프를 생성하고 지역변수, 매개변수 등을 관리한다.
  • 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

 

반응형
저작자표시 비영리 동일조건 (새창열림)
  1. 실행 가능한 코드(소스 코드)
  2. 렉시컬 환경
  3. 스코프(전역과 지역)
'Language/javascript' 카테고리의 다른 글
  • 자바스크립트 자주 쓰는 정규식 모음 (이메일, 핸드폰, 주민번호 등)
  • 생성자 함수에 의한 객체 생성, 일반함수와 생성자 함수
  • 자바스크립트 함수 정의 및 함수의 종류
  • 자바스크립트 객체 리터럴 (원시값과 객체를 비교하면?)
도잎
도잎
프론트엔드 개발 성장기록
도잎
JDevelog
도잎
전체
오늘
어제
반응형
  • 분류 전체보기 (149)
    • Web dev (48)
      • React (22)
      • Vue (8)
      • Next.js (6)
      • Node.js (2)
      • Springboot (2)
    • App dev (2)
      • Flutter (2)
    • Language (33)
      • javascript (30)
      • typescript (2)
      • java (1)
    • StyleSeet (3)
      • CSS (3)
      • Sass (0)
    • Database (2)
      • PostgreSQL (1)
    • DevOps (11)
      • Webpack (4)
      • Linux (3)
      • Docker (2)
      • Tomcat (1)
    • 개발지식 (2)
      • Web (1)
    • 항해99(6기) (20)
    • UXUI (0)
    • 알고리즘 (25)
    • 유용정보 (2)

최근 글

hELLO · Designed By 정상우.v4.2.1
도잎
자바스크립트의 실행 컨텍스트, 렉시컬 환경, 스코프
상단으로

티스토리툴바

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.