4. 변수 (Variable)
4.1 변수란 무엇인가? 왜 필요한가?
변수 : 하나의 값을 저장하기 위해 확보한 메모리 공간 자체 또는 그 메모리 공간을 식별하기 위해 붙인 이름.
4.2 식별자 (Identifier)
- 어떤 값을 구별해서 식별할 수 있는 고유한 이름 (=== 변수이름)
- 선언(declaration)에 의해 자바스크립트 엔진에 식별자의 존재를 알린다.
4.3 변수 선언 (Variable declaration)
- 변수를 생성하는 것.
- 변수를 사용하려면 반드시 선언이 필요하고 선언할 떄는 var, let, const키워드를 사용한다.
- 변수를 선언한 이후에 변수에 값을 할당하지 않았다면 자바스크립트 엔진에 의해 undefined이라는 값이 암묵적으로 할당되어 초기화된다.
4.4 변수선언의 실행 시점과 변수 호이스팅
변수 선언은 소스코드가 한 줄씩 순차적으로 실행되는 시점이 아닌 그 이전 단계에서 먼저 실행된다. 이처럼 변수 선언문이 코드의 선두로 끌어 올려진 것처럼 동작하는 자바스크립트 고유의 특징을 변수 호이스팅이라 한다.
4.5 값의 할당
- 변수에 값을 할당할 때는 할당 연산자 =를 사용한다. 할당 연산자는 우변의 값을 좌변의 변수에 할당한다.
- 변수 선언은 런타임 이전에 먼저 실행되지만 값의 할당은 런타임에 실행된다.
4.6 값의 재할당
- 이미 값이 할당되어 있는 변수에 새로운 값을 또 다시 할당하는 것
- 변수에 값을 재할당 하면 새로운 메모리 공간을 확보하고 그 공간에 값을 저장한다. 불필요한 값은 가비지 콜렉터에 의해 메모리에서 자동 해제된다.
4.7 식별자 네이밍 규칙
- 식별자는 특수문자를 제외한 문자, 숫자, 언더스코어(_), 달러 기호($)를 포함할 수 있고, 숫자로 시작하는 것은 허용하지 않는다.
- 예약어는 식별자로 사용할 수 없다.
네이밍 컨벤션
// 카멜 케이스
var firstName;
// 스네이크 케이스
var first_name;
// 파스칼 케이스
var FirstName;
// 헝가리언 케이스
var strFirstName; // type + identifier
var $elem = document.getElementById('myId'); // DOM 노드
var observable$ = fromEvent(document, 'click'); // RxJS 옵저버블