console.log(score); //undefined
var score; //변수 선언문
위 코드를 보면 변수 선언문보다 변수를 참조하는 코드가 앞에 있다. 자바스크립트는 한줄 씩 차례대로 읽어나가는 특성이 있다.
하지만 위 코드를 보면 참조에러가 발생하지 않고 undefined가 출력이 된다.
이유는 변수 선언이 소스코드가 한 줄 씩 순차적으로 실행되는 시점. 즉 런타임이 아니라 그 이전 단계에서 먼저 실행되기 때문이다.
위 코드를 보았듯이 자바스크립트 엔진은 변수 선언을 포함한 모든 선언문(변수 선언문, 함수 선언문 등)을 소스코드에서 찾아내 먼저 실행한다. 그리고 소스코드의 평가 과정이 끝나면 비로소 변수 선언을 포함한 모든 선언문을 제외하고 소스코드를 한 줄씩 순차적으로 실행한다.
이게 자바스크립트의 문제점이다.???!!!(어디서 들은거 같다.)