변수 선언의 샐행 시점과 변수 호이스팅
console.log(score)//undefined
var score;// 변수선언문
변수 선언문보다 변수를 참조하는 코드가 앞에 있다 자바스크립트 코드는 인터프리터에 의해 한줄씩 순차적으로 실행되므로 console.log(score);가 가장 먼저 실행되고 순차적으로 다음 줄에 있는 코드를 실행한다.
따라서 console.log(score);이 실행되는 시점에는 아직 score 변수 선언이 실행되지 않았으므로 참조에러가 발생할 것처럼 보인다
하지만 참조에러가 발생하지 않고 undefined가 출력된다.
그 이유는 변수 선언이 소스코드가 한 줄씩 순차적으로 실행되는 시점,즉 런타임이 아니라 그 이전 단계에서 먼저 실행되기 때문이다.
자바스크립트 엔진은 변수 선언이 소스코드의 어디에 있든 상관없이 다른 코드보다 먼저 실행된다.
따라서 변수 선언이 소스코드의 어디에 위치하는지와 상관없이 어디서든지 변수를 참조할 수 있다.
이처럼 변수 선언문이 코드의 선두로 끌어 올려진 것처럼 동작하는 자바스크립트 고유의 특징을 변수 호이스팅이라 한다.
사실 변수선언뿐 아니라 var,let,const,function,class 키워드를 사용해서 선언하는 모든 식별자는 호이스팅된다.
모든 선언문은 런타임 이전 단계에서 먼저 실행되기 때문이다.
'Daily Logs > TIL (Today I Learned)' 카테고리의 다른 글
숏폼 프로젝트 ES LINT , prettier 설정 및 트러블 슈팅 (0) | 2024.12.08 |
---|---|
Private 를 모킹 해야하나 말아야하나 ?? ,1. { user: { id: mockUser.id } }가 필요한 이유 (1) | 2024.11.29 |
스웨거 활용법 (0) | 2024.11.08 |
와이어 프레임의 중요성 (1) | 2024.10.21 |
아키텍쳐 패턴 코드 수정 history (1) | 2024.10.13 |