Notice
Recent Posts
Recent Comments
Link
«   2025/08   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31
Archives
Today
Total
관리 메뉴

사고쳤어요

JavaScript 타입 본문

JavaScript

JavaScript 타입

kevinmj12 2025. 3. 26. 22:31

자바스크립트는 7가지의 원시 타입을 제공한다.

Number, BigInt, String, Boolean, Undefined, Null, Symbol

 

Number

다른 언어에서 사용되는 int, long, float 등의 숫자 자료형과 달리 자바스크립트에서는 number 하나의 숫자 자료형만이 존재한다.

또한 자바스크립트는 모든 숫자를 64비트 실수로 처리하고, 정수 타입은 존재하지 않는다.

그리고 무한대를 나타내는 Infinity, Not a Number의 약자로 숫자가 아님을 나타내는 NaN이라는 값도 존재한다.

let a = Infinity;
let b = NaN;

console.log(typeof a); // number
console.log(typeof b); // number

BigInt

BigInt는 Number의 최대값을 넘는 정수도 안전하게 저장하고 연산할 수 있는 자료형이다.

Number은 64비트의 표준을 따르기 때문에 최대로 2^53 - 1까지밖에 표현할 수 없지만

BigInt를 사용한다면 그보다 더 큰 값을 사용할 수 있다.

let a = Number.MAX_SAFE_INTEGER;
let b = BigInt(Number.MAX_SAFE_INTEGER);

console.log(a);
console.log(b);

a = a + 10;
b = b + BigInt(10);

console.log(a);
console.log(b);

// output
// 9007199254740991
// 9007199254740991n
// 9007199254741000
// 9007199254741001n

 

String

String은 텍스트 데이터를 나타낼 때 사용되며 UTF-16 코드 단위의 시퀀스로 표현된다.

작은따옴포('), 큰따옴표("), 백팃(`)으로 감싸서 문자열임을 표현한다.

또한 백팃의 경우 템플릿 리터럴 표기법을 통해 줄바꿈을 허용하고 ${}으로 표현식을 삽입할 수 있다.

let hello = "Hello";

let a = "Hello World";

let b = `Hello
wold`;

let c = `${hello} world`;

console.log(a);
console.log(b);
console.log(c);

// output
// Hello World
// Hello
// wold
// Hello world

 

Boolean

Boolean은 논리적 데이터로 True(참) 또는 False(거짓)의 값만 가질 수 있다.

 

Undefined

Undefined는 변수를 선언한 후 값을 할당하지 않은 변수에 기본적으로 할당이 되는 값이다.

변수가 생성되는 선언단계, 초기화단계, 할당단계 중 초기화단계에서 할당하는 값에 해당된다.

let a; var b; 와 같이 값을 선언하지 않은 변수를 출력했을 때 undefined가 출력되는 것이 이 때문이다.

Null

Null은 변수에 값이 없다는 것을 의도적으로 표현할 때 사용된다.

처음부터 값을 Null로 사용할 수도 있고, 더 이상 참조하지 않겠다는 뜻으로 Null을 사용할 수도 있다.

 

Symbol

Symbol은 ES6에 추가된 타입으로 중복되지 않는 유니크한 값이다.

객체의 key로 사용될 수 있으며, 클래스나 객체의 내부에서만 접근할 수 있도록 사용된다.

const a = {
  [Symbol.for("apple")]: "fruit",
  [Symbol.for("dog")]: "animal",
};

console.log(a[Symbol.for("apple")]); // fruit
console.log(a[Symbol.for("dog")]); // animal

 

 

Reference Type

Reference Type은 객체 타입으로, 다양한 타입의 값을 하나의 단위로 구성한 복합적인 자료 구조이다.

원시 타입을 제외한 모든 것은 객체이다.

객체는 위의 원시 타입과 다르게 객체의 속성을 변경, 추가, 삭제할 수 있다.

const a = { fruit: "apple" };
console.log(a); // { fruit: 'apple' }

a.fruit = "banana";
console.log(a); // { fruit: 'banana' }

a.animal = "dog";
console.log(a); // { fruit: 'banana', animal: 'dog' }

 

객체 타입의 종류에는 일반 객체와 함수, 날짜, 인덱스 컬렉션, 키 컬렉션 등이 있다.

 

동적 타입

자바스크립트는 동적 타입 언어이다.

타입을 의도적으로 변환할 수도 있고, 타입이 의도와 상관없이 변경되기도 한다.

의도적으로 타입을 변환하는 것을 명시적 타입 변환, 의도와 상관없이 변환되는 것을 암묵적 타입 변환이라 한다.

let a = 1;
console.log(typeof a); // number

a = a.toString();
console.log(typeof a); // string

a = parseInt(a);
console.log(typeof a); // number

toString(), parseInt(), Number(), Boolean() 등을 통해 명시적 타입 변환을 할 수 있다.

 

let a = 1;
console.log(typeof a); // number

a = a + "";
console.log(typeof a); // string

a = a * 1;
console.log(typeof a); // number

a = !!a;
console.log(typeof a); // boolean

값 + "", 값 * 1, !!값 등을 통해 의도하지 않은 암묵적 타입 변환이 이루어진다.

의도하지 않게 타입이 변경되면 여러 문제가 발생할 수 있으므로 typeof나 일치연산자(===)를 활용하여 type guard를 사용할 수 있다.

'JavaScript' 카테고리의 다른 글

JavaScript 객체  (0) 2025.04.01
JavaScript 제어 흐름(Flow Control)  (0) 2025.03.27
JavaScript 연산자  (0) 2025.03.27
JavaScript 변수  (0) 2025.03.26
JavaScript의 특징  (0) 2025.03.26