[JS] 자바스크립트 자료형(Data Type)

Wol-dan·2021년 9월 18일
0

자바스크립트

목록 보기
3/6
post-thumbnail

자바스크립트 자료형의 종류

원시타입(Primitive Type)

  • Number(숫자형) typeof instance === "number" // true
  • String(문자열) typeof instance === "string" // true
  • Boolean(불리언) typeof instance === "boolean" // true
  • null typeof instance === "object" // true
  • undefined typeof instance === "undefined" // true
  • Symbol (ES6에서 추가됨) typeof instance === "symbol" // true
  • BigInt typeof instance === "bigint" // true

참조형(Reference Type)

  • 객체(Object)
    • 배열(Array)
    • 함수(Function)
    • 날짜(Date)
    • 정규표현식(RegExp)
    • Map, WeakMap, Set, WeakSet 등(ES6에서 추가됨)

Number(숫자형)

숫자형(Number type)은 정수, 부동소수점 숫자(Floating point Number)를 나타낸다.

특수한 숫자 값도 있다. NaN, Infinity(양의 무한대), -Infinity(음의 무한대)이다.

👉 NaN, isNaN() vs Number.isNaN() 자세히 알아보기

BigInt

(예정)

String(문자열)

문자열은 다음과 같은 기호를 사용하면 만들 수 있다.

  • 큰따옴표 "hello"
  • 작은따옴표 'hello'
  • 역따옴표(backtick) ``

💡 일부 언어는 글자 하나를 저장하는 자료형을 지원하기도 한다. C언어와 Java의 char가 대표적인 예이다.

자바스크립트는 글자형을 지원하지 않는다. 문자열만 있을 뿐이다.

``(backtick)과 템플릿 리터럴(${})의 사용

(예정)

Boolean(불리언)

(예정)

null

null만을 위한 별도의 자료형. 자바스크립트에서 null은 '존재하지 않는(nothing)' 값, '비어 있는(empty)' 값, '알 수 없는(unknown)' 값을 나타내는 데 사용한다.

💡 자바스크립트의 null은 자바스크립트 이외 언어의 null과 성격이 다르다. 다른 언어에선 null을 '존재하지 않는 객체에 대한 참조’나 '널 포인터(null pointer)'를 나타낼 때 사용한다.

undefined

undefined만을 위한 별도의 자료형. undefined는 '값이 할당되지 않은 상태'를 나타낼 때 사용한다.

// let의 경우 변수는 선언되었지만 값이 할당되지 않은 경우, 해당 변수에 자동으로 undefined가 할당된다.

let age;
console.log(age); // undefined

Symbol(심볼)

(예정)

typeof 연산자

typeof 연산자는 인수의 자료형(type)을 반환한다. 자료형에 따라 처리 방식을 다르게 하고 싶거나, 변수의 자료형을 빠르게 알아내고자 할 때 유용하다. typeof를 호출하면 인수의 자료형을 나타내는 문자열을 반환한다.

typeof 연산자는 두 가지 형태의 문법을 지원한다.

  • 연산자 방식 typeof x
  • 함수 방식 typeof(x)
typeof undefined; // "undefined"

typeof 0; // "number"

typeof 10n; // "bigint"

typeof true; // "boolean"

typeof 'foo'; // "string"

typeof Symbol('id'); // "symbol"

typeof null; // "object"  (1)

typeof Math; // "object"  (2)

typeof alert; // "function"  (3)

(1) typeof null의 결과는 "object"이다. null은 별도의 자료형을 가지는 특수값으로 객체가 아니다. 그러나 하위 호환성을 유지하기 위해 이런 오류가 수정되지 않고 남겨져 있게 되었다. 이는 언어 상의 오류이고, null이 객체가 아님에 유의하자.

(2) Math는 수학 연산을 제공하는 내장 객체이므로 "object"가 출력된다. 이처럼 내장 객체의 type은 객체(object)이다.

(3) typeof는 피연산자가 함수이면 "function"을 반환한다. 그러므로 typeof alert"function"를 출력한다. 그런데 함수 자료형은 따로 존재하지 않는다. 함수도 객체(object) 자료형에 속한다. 이것도 하위 호환성을 위해 남겨진 규칙이다. 실무에선 이런 특징이 유용하게 사용되기도 한다.

Ref

profile
정리하고 모으고 커뮤니케이션하는 걸 좋아하는 새싹 웹 개발자🌱

0개의 댓글