자바스크립트 데이터 타입은 처음 자바스크립트를 공부를 시작할 때 간단히 보고 넘어간 게 다였다. 그래서 그런지 얼마 전 데이터타입이 뭐가 있냐는 질문을 받았을 때 가물가물하게 떠올리며 얘기했던 일이 있어 다시 한번 확실하게 정리해야겠다고 생각했다.
먼저 데이터 타입을 왜 알아야 하는 지에 대해 생각해보면, 우리가 개발자로서 코드를 짤 때 사용하는 데이터의 타입에 따라 메모리 크기가 달라지기 때문에 데이터를 저장하며 얼마나 메모리를 사용할지 정하는 기준이 된다. 또한 메모리에 저장했으면 주소를 참조하여 데이터를 사용하게 되는데 이때 데이터값 자체는 2진수로 저장되기 때문에 이를 어떻게 해석할 것인가에 대한 기준이 되는 것이 바로 데이터 타입이다. 예를 들어 0100 0001로 표현된 2진수는 Number 타입으로 나타내면 65지만 String 타입으로 나타내면 'A'로 나타낼 수 있다. 따라서 메모리에 저장된 데이터를 불러와 적절히 해석하여 사용하기 위해선 타입이 필요하고 또 이를 알아야 한다.
참고로 자바스크립트는 동적 타이핑 언어기 때문에 자바 언어처럼 변수 선언 시 데이터 타입을 일일이 정해주지 않아도 자바스크립트 엔진이 타입추론을 통해 데이터 타입을 자동으로 할당한다.
(*변수는 데이터값의 주소를 기억하는 저장 공간, 식별자는 변수명을 나타낸다. )
자바스크립트에는 어떤 데이터 타입들이 있는지 살펴보겠다. 크게 원시 타입과 객체 타입으로 나뉜다
⭐원시 타입
원시 타입에는 총 7개의 데이터 타입이 있으며 원시 값은 변경할 수 없는 값. 즉, 불변값이다.
- Boolean,
- Number
- BigInt(Number의 안전 한계를 넘어서는 큰 정수도 저장하고 연산할 수 있다)
- null
- undefined
- String
- Symbol(es6 새로 추가됨)
🔍undefined와 null의 차이
두 가지 타입 모두 '값이 없음'을 나타낸다. 그렇지만 이 두 가지를 구분해서 사용해야 한다.
✔️undefined는 개발자가 의도적으로 할당한 값이 아니라 자바스크립트 엔진에 의해 초기화된 값이다. 즉, 값을 할당하지 않는 변수에 자바스크립트 엔진이 자동으로 할당하는 데이터 값이다. 따라서 개발자가 값이 없음을 명시적으로 나타내는 경우에는 null 타입을 사용하자.
✔️null은 의도적으로 변수에 값이 없다는 것을 명시하는 것으로 변수에 저장된 메모리 주소 참조 정보를 제거한다. 그래서 해당 변수에 대해 가비지 컬렉션을 수행할 수 있게 된다.
⭐객체 타입
원시 타입과 달리 객체 타입은 변경 가능한 값이다. 새로운 값(새로운 메모리 주소로 할당하지 않는다)을 만들지 않고 직접 객체 안의 데이터를 변경할 수 있다.
객체는 데이터와 데이터를 조작하는 일련의 동작 모두를 포함하는 개념이다. 즉, 이름과 값을 가지는 데이터를 의미하는 프로퍼티와 동작을 의미하는 메소드를 포함할 수 있는 독립적인 주체다. 자바스크립트는 객체 기반의 스크립트 언어로서 원시타입을 제외한 나머지 값들은(함수, 배열 등) 모두 객체이기 때문에, 자바스크립트를 이루고 있는 대부분이 모두 객체이다.
'Programming Language > JavaScript' 카테고리의 다른 글
Throttle와 Debounce (0) | 2022.05.18 |
---|---|
[JavaScript] 호이스팅(Hoisting)이란? (2) | 2022.02.05 |