Core Javascript - 데이터 타입

김규빈·2021년 2월 16일
0

이 글은 Core Javascript를 읽고 내용을 정리하였습니다. 2회독 하였지만 잘못된 내용의 지적을 감사히 받겠습니다.

데이터 타입에 관하여

우리가 자바스크립트를 사용하면서 자연스럽게 접하게 되는 데이터에는 타입이 있다. 타입은 2가지 종류로 나뉘게 되는데 원시형(Primitive)과 참조형(Reference)이 있다.

원시형 데이터는

- Number
- String
- Boolean
- null
- undefined
- symbol

참조형 데이터에는

- Object
- Array
- Function
- Date
- RegExp
- Map
- Set ...

등이 있다.

여기서 대부분 접해봤던 데이터 타입인데 이 중 Symbol은 긴가 민가한 타입이라 좀 더 알아보았다.

심볼(symbol)은 ES6에서 새롭게 추가된 7번째 타입으로 변경 불가능한 원시 타입의 값이다. 심볼은 주로 이름의 충돌 위험이 없는 유일한 객체의 프로퍼티 키(property key)를 만들기 위해 사용한다.

이라고 나와있는데, 내가 이해하기 쉽게 설명하자면 내장객체를 가르키는 변경 불가의 원시타입이라고 생각하면 된다. 심볼은 주로 충돌위험이 없는 유일한 프로퍼티의 키값을 만들때 사용한다.

우리는 알게 모르게 Symbol을 자주 사용 하고 있는데, 바로 Spread 연산자 이다.
배열을 합치거나 복사할때 대표적으로 사용하는 이 Spread연산자는 Symbol.iterator를 Syntax로 작동하게 된다.

여기서 Symbol.iterator의 속성은 고유의 배열이나 유사배열객체 내부의 요소를 순회하는 객체로 Spread는 배열을 순회한뒤 복사하는 원리로 이해하면 된다. iteratornext() 메서드로 순환하고 next()메서드는 인자가 없고 Value와 done으로 반환시켜주는데 next의 마지막은 항상 value: undefined , done:true로 끝나게 된다.

다시 돌아와서 원시형 데이터와 참조형 데이터를 나누는 기준은 복제의 기준으로 나뉘는데, 원시형은 값이 담긴 주솟값을 바로 복제하는 반면 참조형은 값이 담긴 주솟값들로 이루어진 묶음을 가리키는 주솟값을 복제하는 점이다.

원시형 데이터는 불변성을 띄게된다. 여기서 말하는 불변성이란 데이터를 이루고 있는 메모리 영역에서의 불변성이다. 이것을 이해하려면 컴퓨터가 작동할때 메모리의 대한 지식이 필요한데, 컴퓨터는 변수의 영역과 데이터의 영역을 나누어 데이터주소 참조하는 식으로 저장하기 때문이다. 데이터의 영역과 변수의 영역으로 나누어 저장하는 이유는 데이터의 변화와 중복을 효과적으로 처리하기 위함이다. 중복의 데이터는 추가 메모리 확보가 필요없어지고, 변환의 데이터 역시 새로운 영역에 확보하여 참조를 하기 때문에 좀 더 효율적으로 작동하게 된다.

profile
FrontEnd Developer

0개의 댓글