모각독 2주차 3/4 ~ 3/10
가변값
- 기본형 데이터는 모두 불변값
- 그럼 참조형 데이터는 모두 가변값일까?
1) 기본적으로 가변값이 많음
2) 설정에 따라 변경 불가인 경우도 O
3) 아예 불변값
⇒ 기본형 데이터와의 차이 : 객체의 변수 영역이 별도로 존재
예시
var obj = {
a:1,
b:'bbb'
};
⇒ 이럴 경우에 임의의 변수 영역에 변수 obj의 공간 확보
@1001번지
이름: obj
값: @3002
⇒ 데이터 영역에 주소 @3002번지에 가서 값을 저장하려고 보니,
참조형 데이터라 각 프로퍼티들을 저장할 변수 영역이 필요.
임의의 변수 영역 @7001~? 공간 할당(프로퍼티 갯수만큼)
@3002번지(여러개의 프로퍼티로 이루어진 데이터 그룹)
데이터 : @7001~?
임의의 변수 영역 @7001부터 순서대로
a랑 b의 프로퍼티 이름 지정
@7001
이름: a
값: @3004
⇒ a 프로퍼티 이름 저장
@7002
이름: b
값: @3005
⇒ b 프로퍼티 이름 저장
@3004
1
a : 1이니까 데이터 영역에서 1을 검색 ⇒ 없음
임의로 @3004에 1을 넣어주고 해당 주소를
a의 주소인 @7001에 값으로 저장
@3005
bbb
b : 'bbb'니까 데이터 영역에서 'bbb'을 검색 ⇒ 없음
임의로 @3005에 'bbb'를 넣어주고 해당 주소를
b의 주소인 @7002에 값으로 저장
⇒ 데이터 영역에 저장된 값은 모두 불변 값이지만
변수에는 다른 값 대입이 가능 그래서 가변값이라고 하는 것
값을 변경할 때
만약 값을 변경한다면
obj.a = 2;
1) 일단 데이터 영역에서 2를 검색 → 없음
2) 2를 임의의 영역인 @3006에 저장하고
3) 그 주소를 @7001에 저장
⇒ 그래도 여전히 obj은 @3002를 가리킴
즉, 새로운 객체가 만들어진 것이 아니라 기존의 객체 내부의 값만 변경
'모각독 Study > 5기' 카테고리의 다른 글
[11주차] 5/6 ~ 5/12 (0) | 2024.05.12 |
---|---|
[9주차] 4/22 ~ 4/28 (0) | 2024.04.22 |
[7주차] 4/8 ~ 4/14 (0) | 2024.04.14 |
[3주차] 3/11 ~ 3/17 (3) | 2024.03.17 |
[1주차] 2/26 ~ 3/3 (0) | 2024.03.03 |