-
불변성에 대해1 : 기본형 데이터와 참조형 데이터JavaScript 2022. 9. 23. 16:02
1.기본형 타입(Primitive Type) :
숫자( Number), 문자열(String), 불리언(Boolean), null, undefined, 심볼(symbol)
기본형 타입은 할당, 연산시 데이터가 복제된다.
편의상의 표현이지만, a)변수영역과 b)데이터 영역으로 메모리가 할당된다.
a)변수 영역에는 식별자와 주소값이 담겨 있다.
b)데이터 영역에는 데이터가 담겨 있다.
기본형 타입의 불변성은 a) 식별자 변수영역과 관련이 없다.
b) 데이터 영역의 메모리가 변하지 않는다는 것이다.
문자열은 기본형 타입으로, 변경 불가능한 값(immutable value)이다.
다만, 변경 불가능하다는 뜻은 데이터 영역이 변하지 않는다는 것이다.
그러므로 재할당은 가능하다.
var str = 'Hello'; str = 'world';
var statement = 'I am an immutable value'; // string은 immutable value var otherStr = statement.slice(8, 17); console.log(otherStr); // 'immutable' console.log(statement); // 'I am an immutable value'
착각하기 쉽지만, slice() 로 3번 statement 변수의 b)메모리에 저장된 문자열이 변하지는 않는다.
4번과 같이 새로운 문자열을 생성하여 반환하고 있을 뿐이다.
문자열은 변경할 수 없는 immutable value이기 때문이다.
2.참조형 타입(Reference Type)
객체(Object), 배열(Array), 함수(Function), 날짜(date), 정규표현식(RegExp),
Map, WeakMap, Set, WeakSet
참조를 통해 변하는 것도 c) 프로퍼티 영역 뿐이다. b)데이터 영역은 변하지 않는다.
다만, c) 프로퍼티 영역을 통해 person과 person2는 참조 관계에 있다.
그러므로 person2에서 프로퍼티의 값을 수정하면 person에서도 수정이 발생한다.
출처
https://okayoon.tistory.com/entry/코어-자바스크립트-데이터-타입-기본형-타입Primitive-Type과-참조형-타입Reference-Type
기본형 타입(Primitive Type)과 참조형 타입(Reference Type)
데이터 타입의 종류 기본형 타입(Primitive Type) 참조형 타입(Reference Type) 숫자(Number) 문자열(String) 불리언(Boolean) null undefined 심볼(Symbol) 객체(Object) 배열(Array) 함수(Function) 날짜(Date)..
okayoon.tistory.com
'JavaScript' 카테고리의 다른 글
호이스팅 Hoisting (0) 2022.09.23 불변성에 대해2 : Nested Object, 방어적 복사, 불변객체생성 (0) 2022.09.23 형변환 (type casting)1 : 문자열과 숫자 (1) 2022.09.23 느슨한 타입(loosely typed)의 동적(dynamic) 언어 (0) 2022.09.23 == 와 === 차이 (0) 2022.09.23