🍰 변수 호이스팅
: 변수 선언문이 코드의 선두로 끌어 올려진 것처럼 동작하는 JS 고유의 특징
- 이로 인해 변수 선언 위치와 관계없이 변수를 참조할 수 있게 됨
- 자바스크립트 코드는 인터프리터에 의해 한 줄씩 순차적으로 실행됨
- => console.log(value);가 실행되는 시점에는 아직 value 변수의 선언이 실행되지 않았음
- 참조 에러가 발생하지 않고 undefined가 출력됨
- => 변수 선언은 소스코드가 한 줄씩 순차적으로 실행되는 시점인 런타임이 아니라 그 이전 단계에서 먼저 실행되기 때문
- 소스코드 실행 전에 먼저 소스코드의 평가 과정을 거침
🍴 평가 과정
: 자바스크립트 엔진이 변수 선언 포함한 모든 선언문(변수, 함수 선언문 등)을 소스코드에서 찾아내 먼저 실행함
- 소스코드 평가 과정이 끝나면 변수 선언을 포함한 모든 선언문을 제외하고 소스코드를 순차적으로 실행
🍰 변수 선언
: 변수를 생성하는 것.
- 값을 저장하기 위한 메모리 공간 확보
- 변수 이름과 확보된 메모리 공간의 주소를 연결해서 값을 저장할 수 있게 준비
- 변수 사용 시 선언 필요
- var, let, const 키워드 사용
- ES6에서 let, const 도입
🍴 var
: 뒤에 오는 변수 이름으로 새로운 변수를 선언할 것을 지시하는 키워드
- 자바스크립트 엔진에서의 변수 선언 단계: 선언, 초기화
- 선언 - 변수 이름 등록, JS 엔진에 변수 존재 알림
- 초기화 - 값 저장을 위한 메모리 공간 확보, 암묵적으로 undefined 할당해 초기화
- var 키워드는 선언 단계와 초기화 단계 동시 진행
- undefined로 암묵적인 초기화가 자동 수행
- 어떠한 값도 할당하지 않아도 undefined 라는 값을 가짐
'서적 > 모던 자바스크립트 Deep Dive' 카테고리의 다른 글
[9장 타입 변환과 단축 평가] 명시적/암시적 타입 변환 (0) | 2024.06.01 |
---|---|
[06장 데이터 타입] 템플릿 리터럴 (0) | 2024.05.26 |
[05장 표현식과 문] 세미콜론 (0) | 2024.05.26 |
[04장 변수] 식별자 네이밍 규칙 (0) | 2024.05.26 |