자바스크립트

04장 변수와 상수

JH_ 2022. 7. 5. 17:11

📕 변수는 값을 저장할 메모리 공간을 식별하기 위해 붙인 이름을 말한다.
      변수에 값을 저장하는 것을 할당이라 하고, 저장된 값을 읽어 들이는 것을 참조라고 한다.

// 변수는 하나의 값을 저장하기 위한 수단이다.
var userid = 1;
var userName = 'Lee';

// 객체나 배열 같은 자료구조를 사용하면 여러 개의 값을 하나로 그룹화해서 하나의 값처럼 사용할 수 있다.
var user = { id: 1, name: 'Lee'};
var users = [
	{ id: 1, name: 'Lee'}, 
	{ id: 2, name: 'Kim'}
];

 

📕 식별자는 어떤 값을 구별할 수 있는 고유한 이름을 말한다. (변수, 함수, 클래스 등)
      값은 메모리 공간에 저장되어 있어서 식별자는 값이 아니라 메모리 주소를 기억하고 있는 것이다.


호이스팅

📕 변수 호이스팅은 변수 선언문이 코드의 선두에서 동작하는 것처럼 동작하는 자바스크립트 고유의 특징이다.

console.log(score); // undefined
var score; // 변수 선언문

자바스크립트는 인터프리터 언어이므로 한 줄씩 순차적으로 실행된다.
위의 코드는 선언문이 뒤에 있어서 에러가 발생할 것처럼 보이는데 undefined가 출력된다.
그 이유는 자바스크립트 엔진이 실행하기에 앞서 소스코드의 평가 과정을 거치면서 모든 선언문을 찾아 먼저 실행하기 때문이다.

* 선언 단계와 초기화 단계가 한번에 진행


값의 할당과 재할당

📕 변수에 값을 할당할 때는 연산자 =를 사용한다. 변수 선언과 값의 할당을 한 문장으로 표현할 수도 있다.

var score = 80; // 변수선언과 값할당

주의할 점은 변수 선언의 실행 시점은 런타임 이전이고, 값 할당의 실행 시점은 런타임 동안으로 실행 시점이 다르다는 것이다.

console.log(score); // undefined

var score; // 1: 변수선언 
score = 80; // 2: 값의 할당

console.log(score); // 80

값 할당 시에는 undefined의 메모리 공간에 덮어 쓰이지 않고 새로운 메모리 공간에 저장된다.

console.log(score); // undefined

score = 80; // 값의 할당
var score; // 변수선언 

console.log(score); // 선언과 할당이 바뀌어도 80

 

📕 재할당은 이미 값이 할당되어 있는 변수에 새로운 값을 할당하는 것을 말한다.

     여기서 변수에 저장된 값을 변경할 수 없다면 상수이다.

var score = 80; // 변수 선언과 값의 할당
score = 90; // 값의 재할당

재할당은 처음 할당과 마찬가지로 기존 메모리 공간을 지우는 것이 아닌 새로운 메모리 공간에 저장한다.
그렇다면 처음 할당했던 값은 식별자로 연결되어있지 않으므로 가비지 콜렉터에 의해 메모리에서 자동 해제된다.