본문으로 바로가기

데이터 타입의 종류와 특징 이해하기

category JavaScript 2024. 12. 9. 15:36

값 (Value)

이란 데이터를 의미하며, 이는 특정 맥락에 따라 다르게 해석될 수 있습니다.

  1. 데이터 맥락: 값은 원시 데이터 (primitive value) 또는 해당 데이터를 감싸는 객체 래퍼(wrapper) 안에 포함된 값을 가리킬 수 있습니다.
  2. 변수 또는 속성 맥락: 값은 원시 데이터일 수도 있고, 객체를 참조하는 객체 참조(reference)일 수도 있습니다.

원시형

들어가기에 앞서, 원시 값에 대해 알아봅시다.

원시 값이란?
객체가 아니면서 메서드 또는 속성도 가지지 않는 데이터입니다.
그 예로, string, number, bigint, boolean, undefined, symbol, null이 있습니다.

1. string

특정한 컴퓨터 프로그래밍 언어에서 문자를 표현하는 데 사용되는, 문자열 시퀀스입니다.

const str = "Hello, world!";

2. number

배정밀도 64비트 부동소수점 형식의 숫자 데이터 타입입니다.

정수와 부동소수점 값을 모두 포함하며, 최대치는 2^53 - 1 입니다.

const num1 = 1234567890123456; // 정상적으로 처리
const num2 = 123456789012345678901234567890; // 정밀도 손실 발생
console.log(num2); // 1.2345678901234568e+29

3. bigint

임의 정밀도 방식으로 정수를 나타낼 수 있는 숫자 데이터 타입입니다.

손실 없이 큰 정수를 다룰 수 있습니다.

정수 리터럴의 뒤에 'n'을 붙여서 선언합니다.

const big = 123456789012345678901234567890n; // BigInt
console.log(big + 1n); // 123456789012345678901234567891n

const num = 42;
// console.log(big + num); // TypeError: Cannot mix BigInt and other types
console.log(big + BigInt(num)); // 123456789012345678901234567932n

4. boolean

논리적인 데이터 유형으로 true 혹은 false 값만을 가질 수 있습니다.,

const a = true;
const b = false;

5. symbol

고유함이 보장되는 데이터 타입입니다.

cosnt sym1 = Symbol('sym');
const sym2 = Symbol('sym');
console.log(sym1 === sym2); // false

6. undefined

선언한 후 값을 할당하지 않은 변수 혹은 값이 주어지지 않은 인수에 자동으로 할당됩니다.

let name;

7. null

일반적으로 존재하지 않거나 유효하지 않은 object 또는 주소를 의도적으로 가리키는 참조를 나타냅니다.

동작이 원시적으로 보이기 때문에 원시 값 중 하나로 표시되지만 typeof 연산자를 사용하면 object를 반환합니다.

const empty = null;

 

 

 

원시 값 - MDN Web Docs 용어 사전: 웹 용어 정의 | MDN

JavaScript에서, 원시 값(primitive, 또는 원시 자료형)이란 객체가 아니면서 메서드 또는 속성도 가지지 않는 데이터입니다. 원시 값에는 7가지의 종류가 있습니다.

developer.mozilla.org

 

참조형

1. 객체

객체는 속성의 모음으로 볼 수 있습니다. 

속성은 "key" 값을 사용하여 식별되며, 값은 String 값 또는 Symbol value입니다.

const info = {name: '임재원', age: 25};

 

 

Object - MDN Web Docs 용어 사전: 웹 용어 정의 | MDN

JavaScript에서, 객체는 속성의 모음으로 볼 수 있습니다. 객체 리터럴 구문을 사용하면, 제한된 속성 집합이 초기화됩니다. 그런 다음 속성을 추가하고 제거할 수 있습니다. 속성 값은 복잡한 데이

developer.mozilla.org