변수 호이스팅에 대하여 (javascript)

Dengo·2022년 4월 13일
0

JavaScript

목록 보기
2/6
post-thumbnail
console.log(score);
var score;

보통의 프로그래밍 언어였다면 위의 코드에서 Reference 에러가 나게 된다.
왜냐면 변수가 선언이 아직 안되었는데 쓰려고 하는 상황이니 말이다.
하지만 자바스크립트에서는 위의 코드를 실행시켰을때 undefined가 나오게 되는데 이는 놀랍게도 변수 score를 참조하는데에 성공했다는 이야기가 된다.

간단히 정리하면 자바스크립트에서는 코드를 읽고 실행하는 런타임 환경에 진입하기 전에 변수를 포함한 식별자(변수, 함수, 클래스 등)들이
키워드 var, let, const, function, class를 사용하여 선언되었다면 이 선언이 다른 모든 코드들 보다 먼저 실행이된다.
이러한 자바스크립트의 고유한 특징을 호이스팅이라고 한다.

console.log(score);
var score = 80;

그렇다면 다음 코드의 결과도 유추해 볼 수 있다.
값은 여전히 undefined가 나오는데 위에서 설명한대로 "변수의 선언"만 런타임 이전에 먼저 이루어졌기 때문이다.

var score = 80;
이 코드는 언뜻 보기에는 한줄안에서 변수의 선언, 초기화가 동시에 일어날것 같지만
자바스크립트의 호이스팅에 의하여 같이 일어나는것 처럼 보이는 이 코드는
선언과 초기화가 따로 일어남을 알 수 있다.

profile
Software Engineer (전산쟁이)

0개의 댓글