데이터 타입 in JS

tk_jang·2022년 5월 24일

자바스크립트

목록 보기
1/7

1. 데이터 타입의 종류

  • 기본형

  • 참조형

1.) 기본형
  • 숫자, 문자열, 불린, null, undifined ,ES6(Symbol)
2.) 참조형
  • 객체, 배열, 함수, 날짜, 정규표현식

2.어떤 기준으로 기본형과 참조형을 나누는가

1.) 기본형이란
기본형은 불변성을 띕니다.
이는 언뜻 보면 이해가 안갈수 있습니다. 왜냐하면
우리가 var a 에 10이 담아져 있는데 이 변수에 15를 넣었을때 문제없이 
a의 값은 15로 변경이 됩니다. 그럼 변하지 않는다는건 무슨 뜻일까?

먼저 a의 값이 "abc" 라고 가정하자 
근데 이 a의 값을 "abc"+"def" 를했을때 
값은 abcdef 로 변경이되는것 처럼 보이지만
실제로는 abc 라는 값을 그대로 두고  abcdef 라는 값을 
새로 메모리에 할당 하는것 이다.
즉 값은 변하지만 현재의 값을 수정하는게 아닌
새로운 값을 넣어주는 것 이다.

2.) 불변값이란
변수와 상수를 구분하는건 변경 가능성
변수는 변경 가능 상수는 변경 불가능
불변값과 상수를 같은 개념으로 오해하기 쉽다.
변수와 상수를 구분짓는건 변수영역 메모리이고
불변값을 구분하는건 데이터 영역의 메모리 입니다.
3.) 가변값이란
참조형은 모두 가변값일까?
기본적으로는 가변값이지만 설정에따라 변경 불가능 한 경우도 이고 아예 
불변값으로 활용하는 방안도 있습니다.
참조형 데이터가 바라보는 값의 주소는 변경되지 않지만 
그 내부의 값은 변경될수 있는것

만약 내부의 값을 배열로 지정 했다가 
문자열로 재할당을 하면 

특정 시점이나 메모리 사용량이 포화상태에 임박할때
가비지컬렉터가 활성화 되어 자동으로 수거 대상들을 수거합니다.
수거된 메모리는 다시 새로운 값을 활용할 수 있는 빈 공간이 됩니다.

3. 기본형과 참조형의 변수 복사 비교

기본형과 참조형을 각각 복사 한 뒤
복사한 변수의 값을 변경 해주면 
기본형의 경우 해당 주소의 데이터영역 메모리가 변한다.

하지만 참조형의 경우 해당 부분은 변하지 않고 내부의 값만 변하기 때문에 
기본적으로 큰 차이가 있다.

하지만 참조형 데이터도 내부 프로퍼티가 아닌 참조형 데이터 자체를 변경 한다면 데이터영역의 주소값이 바뀌게 된다.

내가 생각한 기본형과 참조형의 차이

앞에 내용에서 장황하게 설명했지만
간단하게 정리하면

기본형은 불변값이다.
값을 변경 시키면 값이 변하지만 이전 값이 변한것이 아니고
아에 별개의 값으로 재 할당 된것이다.

참조형은 가변형이다.
기본적으로 데이터영역의 메모리 주소값은 변하지 않고
내부의 값만 변경된다.

라고 간단히 정리 하고 싶다.
아직 완벽하게 이해 한것 같지는 않지만
그래도 기본형 변수와 참조형 변수의 개념이 어느정도는 성립이 되고
왜 둘을 나누는 지는 모르지만 왜 기본형이고 참조형인지는 알게 된것 같다.

0개의 댓글