모던 자바스크립트 Deep Dive 책을 기반으로 작성한 내용입니다.
보안상의 이유로 브라우저 환경의 자바스크립트는 파일 시스템을 제공하지 않음.
변수 이름을 비롯한 모든 식별자는 실행 컨텍스트에 등록 됨.
실행 컨텍스트(execution context)는 자바스크립트 엔진이 소스코드를 평가하고 실행하기 위해 필요한 환경을 제공하고 코드의 실행 결과를 실제로 관리하는 영역.
console.log(score); // undefined
var score; // 변수 선언
변수 선언문보다 변수 참조 코드보다 앞에 있지만, 변수 선언이 런타임 시점이 아니라 그 이전에 먼저 실행되어 오류가 발생하지 않음.
자바스크립트 엔진은 변수 선언이 소스코드의 어디에 있든 상관없이 다른 코드보다 먼저 실행됨.
변수 선언문이 코드의 선두로 끌어 올려진 것처럼 동작하는 자바스크립트의 고유 특징을 변수 호이스팅 이라고 함.
console.log(score); // undefined
var score; // 변수 선언
score = 80; // 값 할당
console.log(score); // 80
변수 선언은 런타임 이전에 먼저 실행되지만, 값의 할당은 런타임 시점에 실행됨
변수 선언과 값 할당을 하나의 문으로 표현해도 동일하게 동작함.