변수를 선언하여 메모리에 값을 저장시키고, 변수의 이름 즉, 식별자는 메모리의 위치를 기억한다,
변수를 선언한 후 값을 할당하지 않은 경우, 메모리는 비어있는 것이 아니라 undefined 값이 할당되어 있다.
Reference Error : 참조(메모리의 위치를 읽어오는 것) / 선언되지 않은 식별자를 참조했기 때문에 오류가 생기는 것.
변수 호이스팅 : 소스코디 실행 전, 소스코드의 평가 과정에서 자바스크립트 엔진은 변수 선언을 포함한 모든 선언문을 먼저 실행한다. 변수 선언문이 코드의 어디에 있든, 상단으로 끌어 올려진 것 처럼 동작하는 것을 '변수 호이스팅' 이라고 하며, 이는 JS 고유의 특징이다.
변수 선언은 메모리를 확보하고 undefined 값을 할당하는 것. 변수 선언은 런타임 이전에 실행되지만, 값의 할당은 런타임에 실행된다.
변수에 값을 할당할 때, 기존의 undefined를 지우고 다시 할당하는 것이 아니라, 새로운 메모리 공간을 확보해 거기에 저장하는 것.
확보된 메모리 공간에 이전에 사용했던 값들, 즉 식별자가 없는 쓰레기 값(garbage value)는 가비지 콜렉터에 의해 자동으로 해제된다. 자바스크립트는 가비지 콜렉터를 내장하고 있는 매니지드 언어로, 이를 통해 메모리 누수를 자동으로 방지한다.
자바스크립트에서 보통 변수/함수 네이밍에는 카멜케이스를, 생성자함수/클래스 이름에는 파스칼 케이스를 사용한다.