1-4-1 불변값

<aside> 💡 기본형 데이터는 모두 불변값이다.

</aside>

다음과 같이 변수의 할당값을 변경하려는 시도는 값 자체를 바꾸는 게 아니라, 변경된 값을 새로 만들어 데이터 영역에 저장하고 그 주소만 변경하게 된다. 즉, 기존 값은 절대로 변경되지 않는다.

var a = 'abc'
a = a + 'def' 
// 'abc'의 값이 변화하는 것이 아닌, 새로 'abcdef'의 값을 만들거나 재활용함.
// 즉 'abc'는 절대로 변화하지 않음.

var b = 1
var c = 1 // b의 데이터 영역 주소값을 재활용
b = 7 // 1이 변화하는 것이 아닌, 새로 7 값을 만들거나 재활용함. 즉, 1은 절대로 변화하지 않음.

1-4-2 가변값

<aside> 💡 참조형 데이터는 기본적인 경우 가변값, 즉 변할 수 있는 값이다.

</aside>

참조형 데이터의 할당

객체 내 변수들에 대한 변수 영역이 추가적으로 존재한다. 객체 내 변수들은 변화하지만 객체 자체의 변수 데이터에 대응하는 주소값은 변하지 않으므로 참조형 데이터는 가변값이다.

var obj1 = {
	a: 1,
	b: 'bbb'
}

변수 영역

주소 1001 1002 1003 1004 1005
데이터 이름: obj1
값: @5001

데이터 영역

주소 5001 5002 5003 5004 5005
데이터 @7103 ~ ? 1 'bbb’

객체 @5001의 변수 영역

주소 7103 7104 7105 7106 7107
데이터 이름: a
값: @5003 이름: b
값: @5004