[JavaScript] 데이터 타입
업데이트:
데이터 타입 Data type
값의 종류를 의미하며 자바스크립트의 모든 값은 데이터 타입을 갖는다.
자바스크립트 ES6은 원시 타입과 객체 타입으로 분류할 수 있는 7개의 데이터 타입을 제공한다.
- 원시 타입 : 숫자, 문자열, 불리언, undefined, null, symbol
- 객체 타입 : 객체, 함수, 배열 등…
숫자 타입 Number type
자바스크립트는 독특하게 정수와 실수의 구분 없이 하나의 숫자 타입만 존재한다.
ECMAScript 사양에 따르면 모든 수를 실수로 처리하며, 정수만 표현하기 위한 데이터 타입이 별도로 존재하지 않는다.
또한 자바스크립트에는 따로 2진수, 8진수, 16진수를 표현하기 위한 데이터 타입을 제공하지 않기 때문에 값을 참조하면 모두 10진수로 해석된다.
// 정수로 표시되어도 사실은 실수
alert( 5 === 5.0 ); // true
alert( 3 / 2 ); // 1.5
// 모두 65(10진수)로 같은 값
var binary = 0b01000001; // 2진수
var octal = 0o101; // 8진수
var hex = 0x41; // 16진수
숫자 타입의 특별한 값 표현
-
Infinity
: 양의 무한대 -
-Infinity
: 음의 무한대 -
NaN(not-a-number)
: 산술 연산 불가, 계산 중에 에러가 발생했다는 것을 나타내주는 값
// 양의 무한대
alert( 1 / 0 ); 또는 alert( Infinity );
// 음의 무한대
alert( 1 / -0 ); 또는 alert( -Infinity );
// NaN : 대소문자 주의
alert( '안녕' / 2 ); // 문자열을 숫자로 나누면 오류 발생, NaN 반환
BigInt
(2^53-1)
보다 큰 값이나 -(2^53-1)
보다 작은 값은 숫자 타입을 사용해 나타낼 수 없다.
이때 정수 리터럴 끝에 n을 붙여 BigInt형 자료로 만들어준다면 길이에 상관없이 정수를 나타낼 수 있다.
const bigInt = 1234567890123456789012345678901234567890n;
문자열 타입 String type
문자열 타입은 텍스트 데이터를 나타내는 데 사용되며, 문자열을 따옴표로 감싼다.
- 작은따옴표 : ‘Apple’
- 큰따옴표 : “Apple”
- 백틱(backtick) : `Apple`
작은따옴표와 큰따옴표는 기본적인 따옴표로 자바스크립트에서는 이 둘에 차이를 두지 않는다.
백틱의 경우 ${…}
를 이용해 변수나 표현식을 문자열 중간에 손쉽게 넣을 수 있다.
let name = 'Apple';
// 문자열 중간에 변수 삽입
alert( `Hello, ${name}` ); // Hello, Apple
// 문자열 중간에 표현식 삽입
alert( `5 + 9 = ${5 + 9}` ); // 5 + 9 = 14
불리언 타입 Boolean type
불리언 타입은 true
와 false
두 가지 값 밖에 없다.
긍정이나 부정을 나타내거나 비교 결과를 저장할 때 사용된다.
// 긍정 또는 부정
let idChecked = true; // id가 확인되었다.
// 비교 결과
let isGreater = 2 > 5; // false
null type
null 타입은 null 값만 포함하는 자료형이다.
자바스크립트에서 null은 존재하지 않는 값, 비어 있는 값, 알 수 없는 값을 나타내는 데 사용한다.
let name = null; // 값을 알 수 없음 또는 값이 비어있음
undefined type
undefined 타입도 null 타입처럼 undefined 값만 포함하는 자료형이다.
undefined는 값이 할당되지 않은 상태를 나타낼 때 사용한다.
변수를 선언만 했다면 해당 변수에 undefined가 자동으로 할당된다.
let name; // undefined
개발자가 변수에 undefined를 명시적으로 할당하는 것도 가능하긴 하지만…
let name = 'Apple';
// name을 undefined로 바꿈
name = undefined;
alert(name); // undefined
권장하지는 않는다고 한다.
변수가 비어있거나 알 수 없는 상태라는 것을 나타내고 싶다면 null을 사용하도록 하자.
심볼 타입 Symbol type
심볼 타입은 객체의 고유한 식별자를 만들 때 사용된다.
// 심벌 값 생성
var key = Symbol('key');
console.log(typeof key); // symbol
// 객체 생성
var obj = {};
// 이름이 충돌할 위험이 없는 유일무이한 값인 심벌을 프로퍼티 키로 사용한다.
obj[key] = 'value';
console.log(obj[key]); // value
typeof 연산자
typeof 연산자는 인수의 자료형을 반환하며 아래 두 가지 형태의 문법을 지원한다.
- 연산자:
typeof x
- 함수:
typeof(x)
결과는 동일하다.
객체 타입 Object type
객체는 데이터 컬렉션이나 복잡한 개체(entity)를 표현할 수 있다.
자바스크립트는 객체 기반의 언어이므로 위의 6가지 자료형을 제외한 나머지는 모두 객체 타입이다.
댓글남기기