본문 바로가기
JS/JavaScript 강의

3. 데이터 타입 - 원시 타입 (Data Types - Primitive)

by 박기린 2022. 9. 21.

JS의 데이터 타입 유형

JS에서의 모든 데이터는 Object(객체)나 Primitive(원시) 타입으로 이루어져 있습니다.

 


 

Primitive(원시) 데이터 타입의 종류

  1. Number 타입: 대부분 언어에는 int, float, double타입으로 나눠서 정수형과 실수형을 구분하지만 JS 그렇지 않습니다.. 그냥 Number 타입에 모든 숫자를 담습니다.
  2. String타입: 문자열입니다. 작은따옴표('), 큰따옴표(")로 문자를 묶을 수 있습니다.
  3. Boolean타입: 참(true)과 거짓(false) 값을 담습니다.
  4. Undefined타입: 아직 정의되지 않은 변수입니다. 선언만 하고 값을 할당하지 않은 변수입니다. 그래서 변수의 데이터 타입을 모르는 상황입니다. (위 사진의 예시 참조)
  5. Null타입: 선언하고 undefined와는 다르게 빈 값을 할당한 변수입니다. 어떤 값이 의도적으로 비어있는 상태임을 명시합니다.
  6. Symbol타입: ES2015 도입됐는데 근데 쓰이진 않는 타입입니다. 강의에서는 설명을 생략했습니다.
  7. Binint타입: ES2020 도입됐습니다. 값이 너무 커서 Number타입으로는 감당이 불가능할 사용하는 숫자 데이터 타입입니다.

 

동적 타입 

☝️JS는 동적 타입 언어이기 때문에 데이터 유형을 직접 정의할 필요가 없습니다.

int a = 3; // 이렇게 할 필요가 없다.
let a = 3; // number

 


 

typeof

typeof라는 특수 연산자를 이용하여, 해당 변수가 어떤 데이터 타입인지를 알 수 있습니다.

 


 

데이터 타입 재할당

let javascriptIsFun = true;
console.log(javascriptIsFun); // true (bolean)

javascriptIsFun = 'YES!';
console.log(javascriptIsFun); // YES! (String)

위처럼 같은 변수에 다른 데이터 타입의 데이터를 집어넣으면, 변수의 데이터 타입도 같이 변경됩니다.

다른 언어는 이렇게 하면 에러가 발생합니다. 신기한 방식이긴 하지만, 데이터 타입을 고정하지 않고 막 휘두르면 나중에 큰 코를 다칠 수 있으니 기억만 해두고 넘어가도록 합시다.

 


 

undefined

let year;
console.log(year); // undefined
console.log(typeof year); // undefined

year = 1991;
console.log(year); // 1991
console.log(typeof year); // number

let으로 변수를 생성했지만 값을 할당하지 않아 undefined가 되었습니다.

대표적인 경우로 서버로부터 데이터를 요청했을 때 값을 받지 못했을 경우 undefined 상태가 됩니다.


 

null

// null
console.log(typeof null); //object

typeof에서 null일 경우 null이라고 출력하지 않고 object로 출력됩니다. 근데 null은 primitve 타입입니다. obejct라고 생각할 수 있지만, 사실은 legacy한 이유로 현재도 수정되지는 않는 자바스크립트 초기 버전의 버그입니다. (이미 수많은 사이트 코드가 기존의 typeof로 작성되어 있어서 고치면 위험하다고 합니다.)

그래서 typeof 사용시 null타입에 유의해야 할 필요가 있습니다.

 

* null 타입 체크 방법

'=== (엄격하게 같다)' 연산자를 사용하면 됩니다.

이는 데이터 타입까지 같은 경우에만 참을 return 하기 때문에 null을 확실하게 구분할 수 있습니다.

let nul = null;

nul === null;   // true
반응형