JS의 특징 - 변수 호이스팅

Anyes·2021년 10월 27일
0

JS

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

위의 코드를 실행하면 결과는 어떻게 출력될까?

  1. ReferenceError 발생
  2. undefined 출력

정답은 2번 undefined 출력이다.
JS는 한줄씩 순차적으로 실행되기 때문에 이 결과에 대해 의문을 갖는 사람도 있을것이다. 이는 변수 선언이 런타임(소스 코드가 한줄씩 순차적으로 실행되는 시점)이 아닌 그 이전 단계에 먼저 실행된다는 특징을 아직 모르기 때문일것이다.

JS는 한줄씩 순차적 실행을 하기 전 먼저 소스 코드 평가 과정을 거치며 소스 코드 실행 준비를 하게 되는데 이때 변수 선언을 포함한 모든 선언문(변수 선언문, 함수 선언문 등)을 소스 코드에서 찾아내 먼저 실행한 뒤 평가 과정 이후 모든 선언문을 제외하고 소스 코드를 한줄씩 순차적으로 실행한다.

정리하자면
변수 선언이 소스 코드 어디에 있든 상관없이 다른 코드보다 먼저 실행되고 어디서든지 변수 창조가 가능하다는 말이다.

이를 변수 호이스팅이라 하며 변수 선언문이 코드의 선두로 끌어 올려진것처럼 동작하는 자바스크립트 고유의 특징이다.

profile
코딩 공부 - 배운 것 정리 및 프론트엔드 준비

0개의 댓글