자바스크립트에서 호이스팅이 가능한 이유

규갓 God Gyu·2024년 12월 10일

면접질문

목록 보기
26/142

인터프리터 언어
코드를 컴파일하지 않고, 한 줄씩 즉시 실행하는 방식으로 작동하는 프로그래밍 언어

그러한 언어인 자바스크립트에서 호이스팅이 가능한 이유는 자바스크립트 엔진이 코드 실행 전 두 단계의 실행 과정을 거치기 때문

  1. 컴파일 단계
    스크립트 실행 전 함수 및 변수 선언을 한 부분이 메모리에 할당됨
    이때 변수와 함수 선언을 미리 메모리에 올려두기 때문에 실제 코드에서 선언된 위치보다 앞에서 접근이 가능해짐
    let,const가 아닌 var를 통해 선언 시, 컴파일 단계에서 변수가 메모리에 올라가며, 이때 값은 undefined로 초기화

  2. 실행 단계
    실제 코드가 실행되는 과정, 컴파일 단계에서 메모리에 할당된 변수와 함수가 실행
    변수가 할당된 값을 가지게 되고, 함수가 호출되면 그 안의 코드가 수행됨

즉 코드를 단순히 한 줄씩 바로 해석하고 실행하지 않고, 컴파일 단계에서 코드를 파악하고 필요한 메모리를 확보하는 과정을 거치기 때문
이를 통해 코드내에 선언 위치와 상관없이 변수를 사용할 수 있는 유연성 제공

profile
웹 개발자 되고 시포용

0개의 댓글