타입
var, let, const
var는 ES6 이전, let과 const는 ES6 이후 생겨난 선언 타입이다.
var
var num = 1;
var num = 2;
var num = 3;
재선언 및 재할당이 가능하다.
ES6부터 규모가 큰 프로젝트일수록 오류 발생 가능성도 높아져서 var 사용은 권장되지 않는다.
let
let num = 1;
let num = 2; // error
num = 2;
- 재선언이 불가능하며 재할당이 가능하다.
const
let num = 1;
let num = 2; // error
num = 2; // error
상수이며 재선언 및 재할당이 불가능하다.
값과 참조의 차이
원시 Primitive
값이 메모리 셀 안에 바로 들어가 있다.
변수가 메모리 자체를 가리키고 있다.
Copy by Value
- 원시 타입은 값 자체가 복사되어서 할당된다.
let a = 1;
let b = a; // 1
b = 2; // b === 2, a === 1
객체 Object
객체가 들어있는 메모리 주소를 보관한다.
메모리 주소에 참조값, 즉 메모리 주소가 변수에 들어있다.
Copy by Reference
- 객체 타입은 참조값(메모리 주소)가 복사되어서 할당된다.
let apple = {
name: 'apple',
};
let orange = apple;
apple.name = 'banana';
// apple.name === banana
// orange.name === banana