- 데이터 타입의 종류
- 변수 vs 상수
- 변수: 변수 영역의 메모리 변경 o
- 상수: 변수 영역의 메모리 변경 x
- 불변하다 vs 불변하지 않다
- 불변하다: 데이터 영역 메모리 변경 x
- 불변하지 않다: 데이터 영역 메모리 변경 o
더보기
예시) 기본형 데이터의 변수할당 및 변경
var a = 8;
a=9;
- 변수영역
a/@5002 => @5003 |
- 데이터 영역
@5002 | @5003 | ||
8 | 9 |
즉, a = 8 에서 a=9로 변수영역의 메모리를 변경할 수 있다
하지만 @5002에 저장되어있는 8자체를 바꿀 순 없어, 8은 그대로 나두고 9를 새로 할당하게 된다.
즉, 데이터 영역 메모리를 변경 할 수 없으므로 변수는 불변함을 알 수 있다
cf) @5002의 8처럼 더이상 쓸모 없어진 데이터는 자바스크립트의 가비지셀러터의 수거 대상이 된다.
- 참조형 데이터(가변성)
- 참조형 데이터는 기본형 데이터 변수 할당과 달리, 객체의 변수(프로퍼티)영역이 별도로 존재
더보기
예시) 참조형 데이터의 변수 할당 가정 및 변경
var obj1 = {
a : 1,
b : 'bbb',
};
// 데이터 변경
obj1.a = 2;
- 변수 영역
주소 | 1001 | 1002 | 1003 | 1004 |
데이터 | obj1/@7103 |
- 데이터영역
주소 | 5001 | 5002 | 5003 | 5004 |
데이터 | 1 | 'bbb' | 2 |
- 데이터영역(obj1 별도 공간)
주소 | 7103 | 7104 | 7105 | 7106 |
데이터 | a/@5001=>@5003 | b/@5002 |
데이터 영역에 저장된 값은 불변하지만, obj1을 위한 별도 영역의 데이터 영역은 변경이 가능하다!
따라서, 참조형 데이터는 불변하지 않다(즉, 가변하다)
'자바스크립트(javascript)' 카테고리의 다른 글
[프로그래머스 / 코딩테스트연습] x만큼 간격이 있는 n개의 숫자 (0) | 2023.04.10 |
---|---|
[Javascript]배열 정렬 함수 sort(오름차순, 내림차순, 문자열 정렬, 숫자 정렬, 객체 정렬) (0) | 2023.04.08 |
댓글