프로그래밍 언어는 기억하고 싶은 값을 메모리에 저장하고, 저장된 값을 읽어 들여 재사용하기 위해 변수라는 매커니즘을 제공한다. 변수의 정의를 내려보면 다음과 같다.
변수 (variable)는 하나의 값을 저장하기 위해 확보한 메모리 공간 자체 또는 그 메모리 공간을 식별하기 위해 붙인 이름을 말한다.
즉, 변수는 값의 위치를 가리키는 상징적인 이름이다.
변수에 값을 저장하는 것을 할당 (assignment)라 하며 변수에 저장된 값을 읽어 들이는 것을 참고 (reference)라고 한다.
변수 이름은 식별자 (identifier)라고도 하며 식별자는 어떤 값을 구별해서 식별할 수 있는 고유한 이름이며 값이 아닌 메모리 주소를 기억한다.
식별자는 네이밍 규칙을 준수해야 하며, 선언 (declaration)을 통해 존재를 알린다
변수를 사용하려면 변수 선언이 필요하다.
변수를 선언할 때는 var, let, const 키워드를 사용한다.
자세한 내용은 스코프 이후로 추가하도록 하겠습니다.
console.log(score);
var score;
를 실행하면 undefined라는 문자가 출력된다.
변수 선언이 뒤에 있지만 score 변수에는 소스코드 평가 과정에서 undefined가 할당되었기 때문이다.
자바스크립트는 런타임 이전에 소스코드 평가 과정에서 모든 선언문을 먼저 실행하고 소스코드를 한 줄씩 순차적으로 실행한다.
이러한 자바스크립트의 고유 특징을 변수 호이스팅이라한다.
변수에 값을 할당할 때는 할당 연산자 (=)를 사용한다. 할당 연산자는 우변의 값을 좌변의 변수에 할당한다.
var score = 80;
자바스크립트는 변수 선언과 값의 할당을 2개의 독립된 문으로 나누어 실행한다. 즉, 변수 선언은 런타임 이전에 실행되지만 값의 할당은 런타임에 실행된다.
재할당이란 이미 값이 할당되어 있는 변수에 새로운 값을 또다시 할당하는 것이다.
var score = 80;
score = 90;
이렇게 재할당을 하면 80이라는 값은 어떠한 식별자와도 연결되어 있지 않다. 즉, 쓰레기 값이다. 이러한 값은 가비지 콜렉터에 의해 메모리에서 자동 해제된다.
// 카멜 케이스 (camelCase)
var firstName;
// 스네이크 케이스 (snake_case)
var first_name;
// 파스칼 케이스 (PascalCase)
var FirstName;
// 헝가리언 케이스 (typeHungarianCase)
var strFirstName; // type + identifier
개인적으로 파스칼 케이스가 가장 좋아보인다.