- 변수는 하나의 값을 저장하기 위해 확보한 메모리 공간 자체 또는 그 메모리 공간을 식별하기 위해 붙인 이름을 말한다.
- 간단히 말하자면, 값의 위치를 가리키는 상징적인 이름이다.
- 따라서 개발자가 직접 메모리 주소를 통해 값을 저장하고 참조할 필요가 없고 변수를 통해 안전하게 값에 접근할 수 있다.
- 메모리 공간에 저장된 값을 식별할 수 있는 고유한 이름을 변수이름(변수명)이라 하며, 변수에 저장된 값을 변수 값이라고 한다.
- 변수에 값을 저장하는 것을 할당(대입, 저장)이라 하고, 변수에 저장된 값을 읽어 들이는것을 참조라 한다.
- 변수 이름을 식별자라고도 한다.
- 식별자는 어떤 값을 구별해서 식별할 수 있는 고유한 이름을 말한다.
- 식별자는 값이 아니라 메모리 주소를 기억하고 있다.
- 변수 선언이란 변수를 생성하는 것을 말한다.
- 메모리 공간을 확보하고, 변수 이름과 확보된 메모리 공간의 주소를 연결해서 값을 저장할 수 있게 준비하는 것.
- 변수를 사용하려면 반드시 선언이 필요하며 var, let, const 키워드를 사용한다.
var 키워드는 여러 단점을 지니고 있어 ES6 이후로는 주로 let, const만을 사용해 개발한다.
console.log(aa);
var aa;
- 변수에 값을 할당(대입, 저장) 할 때는 할당 연산자 =를 사용한다.
- 변수 선언과 값의 할당을 하나의 문으로 단축 표현할 수 있다.
- 하지만 변수 선언은 런타임 이전에 먼저 실행되고, 값의 할당은 런타임에 실행된다.
- 재할당이란 이미 값이 할당되어 있는 변수에 새로운 값을 또다시 할당하는 것을 말한다.
- 만약 값을 재할당할 수 없어서 변수에 저장된 값을 변결할 수 없다면 변수가 아니라 상수(constant)라 한다.
- ES6에서 도입된 cosnt가 이에 해당한다.
- 변수에 값을 재할당하면 이전 값이 저장되어 있던 메모리 공간을 지우고 그 메모리 공간에 재할당 값을 새롭게 저장하는 것이 아니라, 새로운 메모리 공간을 확보하고 그 메모리 공간에 저장한다.
- 이러한 이전 값이 저장된 메모리는 가비지 콜렉터에 의해 메모리에서 자동해제되지만, 언제 해제될지는 예측할 수 없다.
- 식별자는 특수문자를 제외한 문자, 숫자, 언더스코어, 달러기호를 포함할 수 있다.
- 단, 식별자는 특수문자를 제외한 문자, 언더스코어, 달러기호로 시작해야 한다. 숫자로 시작하는것은 허용하지 않는다.
- 예약어는 식별자로 사용할 수 없다.
- 변수 이름은 목적을 쉽게 이해할수 있도록 명확히 표현해야하며, 주석이 필요하다면 명확히 드러내지 못하는 것이다.
네이밍 컨벤션은 하나 이상의 영어 단어로 구성된 식별자를 만들 때 가독성 좋게 단어를 한눈에 구분하기 위해 규정한 명명 규칙이며, 아래와 같이 4가지 유형이 자주 사용된다.
- 카멜 케이스
firstName;
- 스네이크 케이스
first_name;
- 파스칼 케이스
FirstName;
- 헝가리안 케이스
strFirstName;
일반적으로, 변수나 함수의 이름에는 카멜케이스를 사용하고, 생성자나 함수, 클래스의 이름에는 파스칼케이스를 사용한다.