원시 타입의 값 객체 타입의 값
변경 가능 ⭕️
저장 실제 값 저장 참조 값 저장
전달 값에 의한 전달 참조에 의한 전달

11.1 원시 값

원시 타입의 값: 원시 값은 변경 불가능한 값.

string 문자열 데이터 'hello', "안녕"
number 정수, 부동 소수점 숫자 모두 포함 42, 3.14
bigint 아주 큰 정수 123456789012345678901234567890n
boolean 참(true) 또는 거짓(false) true, false
undefined 값이 할당되지 않은 상태 undefined
symbol 유일무이한 값 Symbol('id')
null 값이 없음을 명시적으로 나타내는 타입 null

<aside>

여기서 원시 값 자체는 변경 불가능.

하지만,

변수로 선언되었을 때는 언제든지 재할당을 통해 변숫값을 변경할 수 있다

</aside>

let a = 10;
let b = a;  // b는 a의 값을 복사
b = 20;

console.log(a);  // 10 (변하지 않음)
console.log(b);  // 20

변수와 상수

변수 ↔상수

변수: 재할당이 가능한 변수

상수: 재할당이 금지된 변수일 뿐이다

// const 키워드를 사용해 선언한 변수는 재할당이 금지 된 변수일 뿐이다
const o = {};

// const 키워드를 사용해 선언한 변수에 할당한 원시값은 변경 할 수 없다.
// 하지만 const 키워드를 사용해 선언한 변수에 할당한 객체는 변경 가능
o.a = 1;
console.log(o); // {a:1}

원시값 메모리 관점