본문 바로가기

모각독 Study/5기

[2주차] 3/4 ~ 3/10

  모각독 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