[기술면접] JavaScript 부분 10

Boyoung Lee·2024년 11월 23일

기술면접

목록 보기
29/49
post-thumbnail

<목차>

  1. 변수가 메모리에 할당되는 과정과 메모리에 대하여
  2. 실행 컨텍스트와 구성요소인 Variable Environment와 Lexical Environment의 역할과 차이점 , 스코프 체인과 this

20. 변수가 메모리에 할당되는 과정과 메모리에 대하여

  • 변수는 데이터를 저장하기 위해 사용되는 메모리 공간을 참조
  • 자바스크립트는 동적 타입 언어이므로 변수를 선언할 때 데이터 타입을 명시할 필요가 없다.
  • 변수의 타입은 런타임에 결정
  • 변수는 두가지 주요 메모리 영역에 저장 : 스택(Stack), 힙(Heap)
    • 스택 : 함수 호출 및 로컬 변수(기본 데이터 타입)을 저장하는 메모리 영역, 기본 데이터 타입이 저장 됨
    • 힙 : 동적으로 할당되는 메모리 영역, 크기가 가변적인 데이터 저장, 참조 타입 데이터가 저장 됨, 힙에 저장된 데이터는 스택에 참조(주소)로 저장되며 변수는 힙에 저장된 데이터의 메모리주소를 가리킴

변수가 메모리에 할당되는 과정
1. 변수 선언

  • var, let, const키워드를 사용
  • 선언만 하고 초기화 하지 않은 변수는 undefined로 초기화됨
  • 선언은 주로 실행 컨텍스트의 변수 환경 또는 렉시컬 환경에 기록
  1. 메모리 할당
  • 기본 타입 : 숫자, 불리언, null, undefined, 심볼과 같은 기본 타입은 스택 메모리에 직접 저장, 고정된 크기를 가지고 있기 때문에 효율적으로 관리 가능
  • 참조 타입 : 객체, 배열, 함수 등. 힙 메모리에 저장. 크기가 동적으로 변할 수 있음, 스택에는 힙 메모리에 저장된 데이터의 참조(주소)가 저장
  1. 가비지 컬렉션
  • 자바스크립트에서 메모리 관리는 가비지 컬렉터가 자동 수행
  • 더이상 사용되지 않는 메모리, 즉 도달할 수 없는 메모리를 주기적으로 검사하고 해제
  • 메모리 누수를 방지하고 효율적인 메모리 사용에 도움
  1. 실행 컨텍스트와 클로저
  • 함수가 호출될 때 마다 새로운 실행 컨텍스트가 생성
  • 해당 컨텍스트 내의 지역 변수는 스택에 저장
  • 함수가 외부 함수의 변수에 접근할 수 있는 클로저를 형성할 경우 해당 변수들은 클로저에 의해 참조되어 메모리에서 유지됨

Q. 변수가 메모리에 할당되는 과정과 메모리에 대하여 설명해주세요.

21. 실행 컨텍스트와 구성요소인 Variable Environment와 Lexical Environment의 역할과 차이점 , 스코프 체인과 this

실행 컨텍스트

  • 코드가 평가되고 실행되는 환경
  • 코드가 실행될 때 필요한 모든 정보를 포함
  • 전역 실행 컨텍스트와 함수 실행 컨텍스트 등 여러 종류가 있음

실행 컨텍스트의 구성 요소
1. Variable Environment

  • 초기 실행 단계에서 변수와 함수선언을 저장하는 환경 생성
  • 실행 컨텍스트가 생성될 때의 상태를 캡쳐
  • 해당 컨텍스트 내에서 선언된 변수와 함수 선언의 스코프를 관리
  • 호이스팅 현상에서 중요
  • 함수 내부 어디에서든 함수 선언과 var로 선언된 변수를 접근할 수 있도록 함
  1. Lexical Environment
  • 실행 중에 생성되는 식별자-값 매핑을 포함
  • 실행 컨텍스트가 활성화되는 동안 실시간으로 업데이트
  • 블록 스코프 변수를 포함한 모든 지역 변수, 그리고 관련된 외부 환경에 대한 정보를 관리
  1. This Binding
  • 실행 컨텍스트가 관련 함수와 함께 어떻게 this키워드를 연결할지 정의
  • this의 값은 함수 호출 방식에 따라 결정

Variable Environment와 Lexical Environment의 차이점

  • 기본적으로 같은 구조와 역할을 수행
  • 변수의 변경 사항을 다루는 방식에 차이가 있음
  • LexicalEnvironment는 실행 컨텍스트가 활성화되는 동안 실시간으로 변경
  • VariableEnvironment는 컨텍스트 초기화 시의 스탭샷 유지

스코프 체인

  • 현재 실행 컨텍스트에서 시작하여 외부 환경으로 연결되는 식별자의 스코프를 정의
  • 이 체인을 통해 함수나 블록 내에서 외부 변수에 접근
  • 각 실행 컨텍스트의 렉시컬 환경은 outer environment reference를 포함 => 외부 스코프에 대한 참조

Q. 실행 컨텍스트와 구성 요소인 VariableEnvironment와 LexicalEnvironment의 역할과 차이점, 스코프 체인과 this에 대해 설명해주세요.

profile
정리정돈을 잘하는 개발자가 꿈

0개의 댓글