자바스크립트/자바스크립트란?

원시자료형과 참조자료형

위르겐 2022. 7. 19. 10:51

 

원시자료형과 참조자료형

두 가지 데이터 타입이 존재한다.

 

 

 

원시자료형

 

기본자료형이라고도 불린다.

단 '하나'의 정보만 가지고 있다.

  • number : 3.141592
  • string : 'Jurgen’
  • boolean : true & false
  • undefined : 변수가 정의되지 않았거나 값이 없다.
  • null : 의도적으로 비어있음을 표현하기 위해 null 이라는 것이 들어있다.
  • symbol

 

참조자료형

 

참조형은 원시형 데이터의 집합이다.

배열([])과 객체({}), 함수(function(){})가 대표적이다.

동적으로 크기가 변하는 데이터를 보관하기위해

변수가 아닌 다른곳에 데이터를 저장하고 변수에는 그 주소만 할당한다.

 

  • 배열 – Array : [0,1,2,3,4]
  • 객체 – Object {name : “Hanamon”, age : 16}
  • 함수 – function () {}

 

 

 

참조에서 중요한 개념은 주소값인데

 

다음과 같이 a 라는  

배열을 선언한 후 

1,2,3,4 값을 할당해 준다.

 

 

그 후 b라는 변수에 a를 할당한다음

b의 [1]번째 인덱스를 20으로 바꿔주면

놀랍게도 a변수의 값도 바뀐다.

 

이게 주소값을 참조하기 때문에 생기는 현상인데

배열은 각각의 요소에 대해 

주소값이 지정되어있다.

 

즉 원시자료형 처럼

요소의 값 자체가 저장되어 있는게 아니라

요소를 가리키는 복잡한 주소하나하나가 배정되어있기 때문에

b[1]가 바뀌면 주소값자체를 바꿔버린다

그렇게 되면 a배열에도 영향을 미친다.

 

 

 

 

원본을 해치는 걸 방지하려면

 

let b = [...a]

라는 스프레드연산자를 통해

복사해줘야 한다.

 

하지만 객체배열에서는 

스프레드연산자를 통한 복사는

얕은복사라고 간주한다.

 

그건 다음포스팅에서...

 

 

 

 

 

 

반응형

'자바스크립트 > 자바스크립트란?' 카테고리의 다른 글

스코프, 호이스팅, TDZ  (0) 2022.07.20
불변 객체를 만드는 방법  (0) 2022.07.19
얕은 복사와 깊은 복사  (0) 2022.07.19
undefined와 null  (0) 2022.07.19
자바스크립트의 고유한 특성  (0) 2022.07.18