호이스팅에 의한 값의 할당
자바스크립트에서 변수선언은 소스코드가 한 줄씩 순차적으로 실행되는 시점, 즉 런타임(runtime)이 아니라 이전 단계에 먼저 실행된다.
이처럼 변수 선언문이 코드의 선두로 끌어 올려진 것처럼 동작하는 자바스크립트 고유의 특징을 변수 호이스팅(variable hoisting)
이라고 한다.
var score; // 변수 선언
score 80; // 값의 할당
변수 선언은 소스코드가 순차적으로 실행되는 시점인 런타임 이전에 먼저 실행되지만 값의 할당은 소스코드가 순차적으로 실행되는 시점인 런타임에 실행된다.
console.log (score); // undefined
var score; // 변수 선언
score = 80; // 값의 할당
console.log(score) // 80
변수의 선언과 값의 할당을 하나의 문장으로 단축 표현해도 자바스크립트 엔진은 변수의 선언과 값의 할당을 2개의 문으로 나누어 각각 실행한다. 따라서 변수에 undefined가 할당되어 초기화되는 것은 변함이 없다.
console.log(score) // 2. undefined
score = 80; // 3. 값의 할당
var score; // 1. 변수 선언
console.lgo(score) // 4. 80
변수의 호이스팅이 진행되면 런타임시 순차적으로 소스코드가 실행될 때, 런타임 전에 이미 실행되었기에 다시 실행되지는 않는다