원시자료형과 참조자료형
두 가지 데이터 타입이 존재한다.
원시자료형
기본자료형이라고도 불린다.
단 '하나'의 정보만 가지고 있다.
- 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 |