원시타입과 참조타입

안재우·2021년 9월 9일
0

js

목록 보기
7/8

원시타입

원시타입은 불변형을 가지고있음
불변형이란 변하지않는 다는 뜻을 갖고있고 원시타입이 변수에 할당하였을 때 메모리의 고정크기로 원시값을 저장하고 해당 저장된 값을 변수가 직접적으로 가리키는 형태를 가지고있다

Let a = 100
a= 50

간단하게 설명하면 첫번째 a를 실행하면 100이란 메모리에 number타입의 100이 생성되는데 두번째로 실행하면 이전에 변수 a에 할당된 100이 지워지고 50이 수정되는 것이 아닌 새로운 number타입의 50이란 값을 새로운 메모리에 생성되고 a가 가리키던 메모리가 바뀌는것이다

Let a = 100 -> 100

a= 50; ㅡ 100

ㅣㅡ> 50

참조타입
참조 자료형 (Reference data type) = 참조타입

  • 자바스크립트에선 원시 자료형이 아닌 모든 것은 참조 자료형이다.
  • 참조형은 원시형 데이터의 집합이다.
  • 배열([])과 객체({}), 함수(function(){})가 대표적이다.
  • 참조 자료형은 기존에 고정된 크기의 보관함이 아니다.
  • 참조 자료형을 변수에 할당할 때는 변수에 값이 아닌 주소를 저장한다.
  • 동적으로 크기가 변하는 데이터를 보관하기위해 변수가 아닌 다른곳에 데이터를 저장하고 변수에는 그 주소만 할당한다.
  • 배열 – Array : [0,1,2,3,4]
  • 객체 – Object {name : “Hanamon”, age : 16}

원시타입과 참조타입의 가장 큰 차이점은 변수의 크기가 동적으로 변한다는 것
object의 데이터 자체는 별도의 메모리 공간(heap)에 저장되면 변수에 할당시 데이터에 대한 주소(힙(Heap)메모리의 주소값)가 저장되기때문에 자바스크립트 엔진이 변수가 가지고있는 메모리 주소를 이용해서 변수의 값에 접근하게 되는 것이다.

                       ㅡㅡㅡㅡㅡㅡ>[]
                       l
                       l
                       l

Let myArr = [] ㅡㅡㅡㅡㅡ> adress


Let copyArr = myArr ㅡㅡㅡㅡㅡ

참조타입의 변수는 실제 데이터가 저장된 주소를 참조하기에 참조타입이라 불리운다. 그렇기에 변수의 복사나 수정 시 참조 여부를 잘 고려해야 한다. 만일 이러한 특성을 고려하지 않은 채 중요한 정보를 담고있는 객체나 배열에 수정 및 복사를 가하게되면 원본 데이터가 예상치 못한 방향 으로 변경될 수 있으므로 항상 이를 고려하자( 값이 복사가 되는것이 주소에 저장되있는것을 복사하므로 값이 변형될 수있다)

원시타입과 참조타입의 차이점
원시타입은 변수에 메모리에 그대로 저장하지만 참조타입의 변수는 주소에 데이터를 저장하여 참조한다.

profile
프론트개발자

0개의 댓글

관련 채용 정보