Notice
Recent Posts
Recent Comments
Link
«   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
Tags
more
Archives
Today
Total
관리 메뉴

늘보블로그

원시 값과 객체 본문

스터디로그/javascript

원시 값과 객체

개발자늘보 2021. 1. 2. 22:40

원시 값과 객체


원시 값

1. 변경 불가능한 값
  • 원시 값은 변경이 불가능함 -> 데이터의 신뢰성 보장
  • 변경 불가능한 것은 변수가 아닌 값의 불변을 의미
  • 즉 변수에 재할당은 가능함.
    • 값의 불변성: 변수에 원시 값을 재할당할 경우 1) 메모리 확보 2) 재할당할 값 저장 3) 변수가 참조하던 메모리 주소 변경을 거침.
2. 문자열과 불변성
  • 원시 타입 별로 메모리 공간의 크기는 미리 정해져있으나 ECMAScript 사양에 문자열(2바이트)과 숫자(8바이트) 외의 명확한 규정은 없어서 브라우저마다 차이 있을 수 있음.
  • 문자열: 0개 이상의 문자로 이뤄진 집합.
  • 이론상 1개의 문자는 메모리 상 2바이트 차지하므로 1개 이상일 경우 문자열 길이에 따라 크기가 달라짐
  • C의 경우 이러한 이유로 문자열이란 타입은 존재하지 않으나 자바스크립트는 개발자 편의를 위해 원시 타입으로 문자열이 있음
  • 문자열은 유사 배열 객체이며 이터러블
    • 유사 배열 객체: 배열처럼 인덱스로 프로퍼티 값에 접근 가능하고 length 프로퍼티를 가짐
  • 문자열은 원시 타입이므로 변경 불가능한 값이며 재할당이 가능함
3. 값에 의한 전달
  • 변수에 원시 값을 갖는 변수를 할당하면 할당받는 변수에는 할당되는 변수의 원시 값이 복사되어 전달됨
  • 값은 같더라도 복사한 값이 새로운 메모리 주소에 저장되므로 두 변수는 별개의 값을 가짐
  • 할당되는 변수 값이 변경되도 할당받는 변수에 영향을 주지 않음

객체

1. 변경 가능한 값
  • 객체를 할당한 변수는 참조하는 메모리 주소를 통해 참조 값에 접근할 수 있음
  • 원시 값을 할당한 변수는 '변수는 ~값을 갖는다'라고 표현, 객체를 할당한 변수는 '변수는 객체를 참조하고 있다', '변수는 객체를 가리키고 있다'라고 표현
  • 객체를 할당한 변수는 재할당 없이 객체를 직접 변경할 수 있음 -> 변수의 참조 값이 변경되지 않음
    • 객체의 생성, 관리 방식은 복잡하고 비용 소모가 큰 작업으로 메모리의 효율성, 성능의 향상을 위해 변경 가능한 값으로 설계됨
  • 원시 값과 달리 여러 개의 식별자가 하나의 객체를 공유할 수 있음
2. 참조에 의한 전달
  • 객체를 가리키는 변수를 다른 변수에 할당하면 원본의 참조 값이 복사되어 전달됨
    • 두 변수 모두 같은 메모리 주소를 참조하게 됨 -> 동일한 객체를 가리킴 -> 원본 혹은 사본 중 한 쪽에서 객체를 변경하면 서로 영향을 받음

'스터디로그 > javascript' 카테고리의 다른 글

함수 1  (0) 2021.01.15
Number() vs. parseInt()  (0) 2021.01.09
객체리터럴 2  (0) 2020.12.21
객체리터럴 1  (0) 2020.12.18
타입 변환 2  (0) 2020.12.17