서적/모던 자바스크립트 Deep Dive

[04장 변수] 변수 호이스팅(variable hoisting), var

kelly09 2024. 5. 26. 00:12

🍰 변수 호이스팅

: 변수 선언문이 코드의 선두끌어 올려진 것처럼 동작하는 JS 고유의 특징

  • 이로 인해 변수 선언 위치와 관계없이 변수를 참조할 수 있게 됨

  • 자바스크립트 코드는 인터프리터에 의해 한 줄씩 순차적으로 실행됨
  • => console.log(value);가 실행되는 시점에는 아직 value 변수의 선언이 실행되지 않았음
  • 참조 에러가 발생하지 않고 undefined가 출력됨
  • => 변수 선언은 소스코드가 한 줄씩 순차적으로 실행되는 시점인 런타임이 아니라 그 이전 단계에서 먼저 실행되기 때문
  • 소스코드 실행 전에 먼저 소스코드의 평가 과정을 거침

🍴 평가 과정

: 자바스크립트 엔진이 변수 선언 포함한 모든 선언문(변수, 함수 선언문 등)을 소스코드에서 찾아내 먼저 실행

  • 소스코드 평가 과정이 끝나면 변수 선언을 포함한 모든 선언문을 제외하고 소스코드를 순차적으로 실행

 

🍰 변수 선언

: 변수를 생성하는 것.

  • 값을 저장하기 위한 메모리 공간 확보
  • 변수 이름과 확보된 메모리 공간의 주소를 연결해서 값을 저장할 수 있게 준비
  • 변수 사용 시 선언 필요
  • var, let, const 키워드 사용
  • ES6에서 let, const 도입

🍴 var

 : 뒤에 오는 변수 이름으로 새로운 변수를 선언할 것을 지시하는 키워드

  • 자바스크립트 엔진에서의 변수 선언 단계: 선언, 초기화
  • 선언 - 변수 이름 등록, JS 엔진에 변수 존재 알림
  • 초기화 - 값 저장을 위한 메모리 공간 확보, 암묵적으로 undefined 할당해 초기화
  • var 키워드는 선언 단계와 초기화 단계 동시 진행
  • undefined 암묵적인 초기화가 자동 수행
  • 어떠한 값도 할당하지 않아도 undefined 라는 값을 가짐