늘보블로그
개발자늘보
« 2025/08 »
일 |
월 |
화 |
수 |
목 |
금 |
토 |
|
|
|
|
|
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
|
|
|
|
|
|
관리 메뉴
늘보블로그
원시 값과 객체 본문
원시 값과 객체
원시 값
1. 변경 불가능한 값
- 원시 값은 변경이 불가능함 -> 데이터의 신뢰성 보장
- 변경 불가능한 것은 변수가 아닌 값의 불변을 의미
- 즉 변수에 재할당은 가능함.
- 값의 불변성: 변수에 원시 값을 재할당할 경우 1) 메모리 확보 2) 재할당할 값 저장 3) 변수가 참조하던 메모리 주소 변경을 거침.
2. 문자열과 불변성
- 원시 타입 별로 메모리 공간의 크기는 미리 정해져있으나 ECMAScript 사양에 문자열(2바이트)과 숫자(8바이트) 외의 명확한 규정은 없어서 브라우저마다 차이 있을 수 있음.
- 문자열: 0개 이상의 문자로 이뤄진 집합.
- 이론상 1개의 문자는 메모리 상 2바이트 차지하므로 1개 이상일 경우 문자열 길이에 따라 크기가 달라짐
- C의 경우 이러한 이유로 문자열이란 타입은 존재하지 않으나 자바스크립트는 개발자 편의를 위해 원시 타입으로 문자열이 있음
- 문자열은 유사 배열 객체이며 이터러블
- 유사 배열 객체: 배열처럼 인덱스로 프로퍼티 값에 접근 가능하고 length 프로퍼티를 가짐
- 문자열은 원시 타입이므로 변경 불가능한 값이며 재할당이 가능함
3. 값에 의한 전달
- 변수에 원시 값을 갖는 변수를 할당하면 할당받는 변수에는 할당되는 변수의 원시 값이 복사되어 전달됨
- 값은 같더라도 복사한 값이 새로운 메모리 주소에 저장되므로 두 변수는 별개의 값을 가짐
- 할당되는 변수 값이 변경되도 할당받는 변수에 영향을 주지 않음
객체
1. 변경 가능한 값
- 객체를 할당한 변수는 참조하는 메모리 주소를 통해 참조 값에 접근할 수 있음
- 원시 값을 할당한 변수는 '변수는 ~값을 갖는다'라고 표현, 객체를 할당한 변수는 '변수는 객체를 참조하고 있다', '변수는 객체를 가리키고 있다'라고 표현
- 객체를 할당한 변수는 재할당 없이 객체를 직접 변경할 수 있음 -> 변수의 참조 값이 변경되지 않음
- 객체의 생성, 관리 방식은 복잡하고 비용 소모가 큰 작업으로 메모리의 효율성, 성능의 향상을 위해 변경 가능한 값으로 설계됨
- 원시 값과 달리 여러 개의 식별자가 하나의 객체를 공유할 수 있음
2. 참조에 의한 전달
- 객체를 가리키는 변수를 다른 변수에 할당하면 원본의 참조 값이 복사되어 전달됨
- 두 변수 모두 같은 메모리 주소를 참조하게 됨 -> 동일한 객체를 가리킴 -> 원본 혹은 사본 중 한 쪽에서 객체를 변경하면 서로 영향을 받음