Javascript 데이터 할당 (기본형, 참조형, 중첩 객체도)

1. 기본형 DATA

var a;
a = 'abc';
a = 'abcdef';

📍풀이

 

2. 참조형 DATA

var obj = {
    a: 1,
    b: 'bbb'
};
obj.a = 2;

📍풀이

객체에 있는 프로퍼티 값을 바꿀 때는 obj 값 주소는 그대로 @5005이게 된다.

기본형에 비해서 참조형이 메모리 할당 과정에서 1단계를 더 거치기 때문이다. 

그래서 기본형이 불변성이라는 것이다. 값이 바뀌지 않는다. 

 

3. 중첩 객체도

var obj = {
    x: 3,
    arr: [3, 4]
};
obj.arr = 'str';

📍풀이

@5004는 7104에서 참조하고 있었는데 obj.arr = 'str';을 하고나면 @5004를 참조하는 대상이 0이 된다. ( = 참조 카운트는 0이다)

참조 카운트가 0이 되면 garbage collecting이 발생하여 사라지게 된다. GC가 발생하면 @5004를 참조하고 있던 @8104와 @8105도 GC가 발생한다. 

 

4. 변수 복사

var a = 10;
var b = a;
var obj1 = {c: 10, d: 'ddd'};
var obj2 = obj1;

b = 15;
obj2.c = 20;

📍풀이