본문 바로가기
STUDY/javascript

[자바스크립트] 원시값과 참고값

by 3급우사기 2024. 9. 20.

자바스크립트의 원시값과 참조값

원시값(Primitive Type)


원시값은 자바스크립트에서 가장 기본적인 데이터 유형이다. 값 자체가 메모리에 저장되며 불변성(immutable)을 가진다.

 

- 자바스크립트의 6가지 원시 타입

  • 숫자(number): 정수와 실수를 포함한다. (예: `42`, `3.14`)
  • 문자열(string): 텍스트 데이터를 의미한다. (예: `'Hello, World!'`)
  • 불리언(boolean): 참 또는 거짓 값을 나타낸다. (`true`, `false`)
  • null: 값이 없음을 나타낸다.
  • undefined: 값이 할당되지 않았음을 나타낸다.
  • symbol: 유일한 식별자를 생성한다. (ES6 추가)

원시값은 변수에 직접 할당되고, 복사될 때는 그 값을 그대로 복사한다. 즉, 다른 변수에 원시값을 할당하면 두 변수는 독립적인 값을 가진다.

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

console.log(a); // 20
console.log(b); // 10

 

참조값(Reference Type)


참조값은 객체나 배열처럼 복잡한 데이터 구조에 사용된다. 값 자체가 아닌 값이 저장된 메모리 주소(참조값)가 변수에 저장된다. 참조값을 복사하면 메모리 주소가 복사되므로, 여러 변수가 동일한 객체를 가리키게 된다.


참조값을 가지는 데이터 유형:

  • 객체(Object): 속성(key-value)을 포함한다. (예: `{ name: 'Alice', age: 25 }`)
  • 배열(Array): 순서가 있는 값들의 리스트다. (예: `[1, 2, 3]`)
  • 함수(Function): 실행 가능한 코드 블록이다.

let obj1 = { name: 'Alice' };
let obj2 = obj1; // obj2는 obj1의 참조값을 복사
obj1.name = 'Bob';

console.log(obj1.name); // 'Bob'
console.log(obj2.name); // 'Bob'

 

 

원시값과 참조값의 차이
  • 원시값은 메모리에 값 자체가 저장된다. 복사하면 독립적인 값을 가지게 된다.
  • 참조값은 메모리에 객체의 주소가 저장된다. 복사하면 동일한 객체를 참조하게 된다.