본문 바로가기

프론트엔드/JAVASCRIPT

[Javascript] Javascript 데이터 타입(data type), typeof() 연산자

*고승원 바닐라 자바스크립트 책 여러 사이트를 보고 공부하고 쓴글입니다.

도움 받은 사이트는 내용 가장 하단에 링크 걸어두었습니다.*

 

INDEX


  • 데이터 타입(data type)
  • 원시 타입(primitive type)
  • 참조 타입 Or 객체 타입(reference type, object type) 
  • typeof() 연산자

 

데이터 타입(data type)


- 데이터 타입은 값의 종류를 의미하며, 그 종류에는 숫자, 문자열 등이 존재한다.

- 원시 타입(기본 타입, primitive type)과 참조 타입(객체 타입, reference type)으로 구성된다.

 

javascript 데이터 타입
js의 데이터 타입

 

 

원시 타입(primitive type)


- 을 저장하는 데이터 타입이다.

- 원시타입은 값을 변형할 수 없는 불변성(immutable)을 가진다.

- 따라서 새로운 값을 다시 할당할 수는 있어도 있던 값을 변형하는 것은 불가능하다.

  -> 값을 교체할 수는 있으나 변형은 안된다.

 

원시타입 불변성 설명
원시타입 값 재할당

 

설명)

- 2번째 줄에서 a.toString()으로 a의 값인 25를 문자열로 변환하려 했으나, 3번째 줄에서 콘솔로 확인해 본 결과 값이 바뀌지 않았다.

- 4번째 줄에서 a의 값을 a = a.toString()으로 재할당하여 값을 교체, 5번째 줄 콘솔에서 타입이 문자열로 바뀐 것을 확인할 수 있다.

- 값이 변화한 것으로 보일 수 있지만 새로운 메모리에 값이 재할당 된 것이다.

 

 

원시 타입인 데이터 타입 종류

  • String(문자열)
  • Number(숫자)
  • BigInt
  • Boolean(참 / 거짓)
  • Undefined
  • Null
  • Symbol

 

 

String(문자열)

- 텍스트 데이터를 나타낼 때 사용한다.

- 문자열(String)을 쌍 따옴표(" ") 또는 홑 따옴표(' ')로 감싸 변수로 할당한다.

 

string데이터 타입 선언 방법
문자열 데이터 생성법

 

 

Number(숫자)

- 숫자를 표현할 때 사용한다. (범위 : -2^53 - 1 ~ 2^53 + 1)

- C언어 등 다른 프로그래밍 언어와 다르게 숫자 타입을 구분하지 않는다.

(C언어의 경우에 숫자를 정수형, 실수형 등(integer, short, float)으로 구분하여 사용)

- 문자열 데이터와는 다르게 따옴표를 사용하지 않고 변수를 할당할 수 있다.

- 64비트 부동소수점 형태로 저장한다.

- 부동소수점 숫자 형태 외에도 +infinity(양의 무한대), -infinity(음의 무한대), NaN(Not a Number)의 값을 가진다.

 

Number 타입 객체
Number 타입

 

 

BigInt

- Number가 나타낼 수 있는 범위보다 더 큰 정수를 표현할 수 있는 객체.

- 정수 뒤 n을 붙이거나, BigInt() 생성자를 호출하여 생성할 수 있다.

 

원시타입 중 BigInt형
BigInt 생성법

 

 

Boolean(참/거짓, 논리형)

- 참/거짓을 나타내는 데이터 타입이다.

- 참은 true, 거짓은 false로 나타낸다.

 

Boolean형 데이터 타입
Boolean 논리 데이터 타입

 

 

Undefined

- 데이터 타입이자 데이터 값, 아무 값도 존재하지 않는다는 표현

- 값을 할당하지 않은 변수는 Undefined값을 갖는다.

 

Undefined 타입
값이 존재하지 않는 Undefined

 

 

Null

- 값이 존재하지 않는다를 명시할 때 사용한다.

- Undefined와는 다르게 의도적으로 값이 '없음'을 설정한다.

- 어떤 값이 할당될지 모를 때 사용한다.

 

의도적으로 값을 주지 않는 null
의도적으로 값을 주지 않는 null

 

 

Symbol

- ES6에 새로 추가된 데이터 타입이다.

- 변경이 불가능하며 고유한 값을 갖는다.

- 스크립트에서 충돌이 일어나지 않도록 유일한 속성 키를 만들 때 사용한다.(객체의 key로 사용 가능)

- Symbol() 생성자를 사용하여 키를 만든다.

* 객체를 모른다면 아래 객체 내용을 먼저 확인하고 읽는 것을 권장합니다.*

 

Symbol 생성법
Symbol 생성법

 

참조 타입(or 객체 타입 reference type)


- 기본 타입을(null, number,....) 제외한 모든 값이다.

- 대표적으로 함수, 배열, 객체 등이 있다.

- 하나의 값만 가질 수 있는 원시 타입과는 다르게 여러 값을 가지는 것이 가능하다.

- 값이 아닌 주소를 저장하는 형태이다.

- 원시 타입은 불변한 값을 갖지만, 참조 타입은 주소를 참조하기 때문에 값을 재할당 할 경우 주소를 참조한 모든 값에 영향이 생긴다.

 

객체의 값 변화 설명
객체는 참조한 모든 값에 영향이 생김

 설명)

- obj라는 객체를 생성한 후 obj2에 복제

- 복제 후 obj2에 key 값과 value값을 부여하여 값을 변화시켰다.

- obj2 뿐만 아니라 obj 안에 있는 값도 변화가 생긴다.

 

 

참조 타입인 데이터 타입 종류

  • Object(객체)
  • Array(배열)
  • Function(함수) 
  • etc.....

위 타입들은 중요하기 때문에 다시 다룰 예정이다.(함수는 연산자, 조건문을 다룬 이후에 글을 쓸 예정)

 

 

Object(객체)

- 키(Key)-값(value) 쌍으로 데이터를 저장한다.

- 객체의 키를 이용해서 데이터의 값을 변경하거나 가져오는 것이 가능하다.

- 객체의 키 값은 문자형, 숫자형 등 자바스크립트의 모든 객체를 값으로 사용할 수 있다. 

- 객체로 함수, 배열의 값을 가질 수 있다.

- 객체는 { } 안에 담는다.

 

객체의 형태
객체가 가질 수 있는 형태

 

 

Array(배열)

- 하나 이상의 다중 데이터를 저장하는 데 사용한다.

- 여러 값을 하나의 단일 참조(single reference)로 저장할 수 있도록 해주는 구조이다.

- 주로 성격이 비슷한 값을 하나의 변수에 담고 싶을 때 사용한다.

  ex) let mbti = ["esfp", "isfj", "enfp", "entp",....]

- 배열은 객체와 마찬가지로 자바스크립트의 모든 객체를 값으로 가질 수 있다.

 

배열의 형태
배열의 기본 형태

 

typeof() 연산자


- 변수의 데이터 타입을 확인하고 싶을 때 사용하는 연산자이다.

- "typeof 확인할 데이터 타입"의 형태로 확인한다.

   ex) typeof 10, typeof "lee"

 

typeof 사용법
typeof 사용법

* 배열도 자바스크립트 내에서는 객체이기 때문에 object라는 데이터 타입을 갖게 된다.

 

 

도움받은 사이트

 

surim's devlog - javascript data type

 

MDN Web Docs - JavaScript의 타입과 자료구조

 

궁둥's devlog - 값 타입, 참조타입

 

박해씨의 기묘한 프론트엔드 - 원시타입과 참조타입