변할 수 있는 데이터를 만든다. 이 데이터의 식별자는 a로 한다. 즉, 변수란 결국 변경 가능한 데이터가 담길 수 있는 공간 또는 그릇을 말한다.
01 var a; 02 a = 'abc';
- 01 선언 과정 : 메모리에서 비어있는 공간을 확보하여 그 공간의 이름을 선언
- 02 할당 과정 : a라는 이름을 가진 주소를 검색해서 그곳에 문자열 'abc'를 할당
조금 더 자세히 풀어쓰면,
① 메모리 '변수 영역'에 빈 공간을 확보하여 이름 'a'를 선언하고 그 값은 undefined를 항당한다.
② 메모리 '데이터 영역'에 빈 공간을 확보하여 문자열 'abc'를 저장
③ 데이터 영역 'abc'의 주소를 변수영역 이름 'a'의 값에 저장
문자열은 특별히 정해진 공간 규격이 없다. 한 글자마다 영어는 1바이트, 한글은 2바이트 등으로 메모리 용량이 가변적이기 때문이다.
불변값과 상수를 같은 개념으로 오해하기 쉬우나, 다르다. 기본적으로 기본형은 불변값, 참조형은 가변값이다. 참조형 데이터는 여러개의 프로퍼티(변수)를 모아둔 '그룹'이기 때문에 기본형과 차이가 있으며, 이로 인해 참조형 데이터는 '가변값'이 된다.
자바스크립트의 버그인데, typeof null을 해보면 object로 나온다. 따라서 어떤 변수의 값이 null인지 여부를 판별하려면 typeof 대신 다른 방식으로 접근해야 한다. (===)