Front-End/JavaScript

[JavaScript] 데이터 타입 (Data Type)

Voyage_dev 2022. 3. 3. 19:44

프로그래밍 언어에서 빠질 수 없는 부분 중 하나가 바로 데이터 타입 (Data Type)이다. 변수에 연산을 적용하기 위해서는 타입에 대하여 아는 것이 중요하다. 데이터 타입 없이, 컴퓨터는 다음을 해결할 수 없다

JavaScript의 타입

JavaScript 언어의 타입은 원시 값 (Primitive Type)과 객체 (Object/Reference Type)로 나뉘며 별도의 선언 없이 변수에 대입한다

  • 원시 값 (언어의 최고 로우레벨에서 직접 표현되는 불변 데이터)
    • Number
    • String
    • Boolean
    • Null
    • Undefined
    • Symbol
  • 참조 타입(객체)
    • 객체
    • 배열
    • 함수
    • 정규 표현식
    배열 / 함수 / 정규표현식 모두 객체다

원시 값 (Primitive Type)

객체를 제외한 모든 타입은 불변 값 (변경할 수 없는 값)을 정의하며 문자열은 불변한다 즉, 원시 타입의 값은 변경 불가능한 값이며 이런 일련의 타입을 원시 값이라고 한다

Number (숫자) 타입

ECMAScript는 Number 와 BigInt 두 가지의 내장 숫자 타입을 가지고 있다

Number 데이터 타입은 배정밀도 64비트 이진 형식 숫자를 의미하며 보통은 정수와 소수, 지수 모두 Number라는 데이터 타입으로 저장된다

const num1 = 10; // Integer
const num2 = 3.14; // Float
const num3 = 2e3; // exponential
const num4 = -10;
console.log(num1/0); // Infinity
console.log(num4/0); // -Infinity
console.log(’a’/3); // NaN

 

이때, Number 타입은 부동소수점 숫자 외에도 Infinity , -Infinity , NaN가 있다.

0으로 어떤 수를 나눌 수 없으므로 이때 리턴되는 값은 무한대 혹은 음의 무한대로 나타낸다. 그리고 계산할 수 없음을 의미하는 NaN이 있다

String (문자열) 타입

JavaScript의 String 타입은 ‘텍스트 데이터를 나타낼 때 사용' 한다 즉, 문자열을 나타내는 타입이다. 16비트 유니코드 문자셋(UTF-16)으로 구성된 집합으로, 각각의 요소가 String의 한 자리를 차지한다

문자열은 Single quotes / Double quotes / Backticks 세 가지로 표현이 가능하다

const name = ‘aaa’;
const number = “10”;
const result = My name is ${name} and number is ${number};
console.log(result);

Single quotes와 Double quotes는 모두 동일하게 String 데이터 타입으로 지정된다. Backticks도 마찬가지지만 추가적인 기능이 있다 바로 ${variable or expression}이다. $와 함께 내부에 변수명이나 표현을 적어주면 그 값을 그대로 출력해 주는 것을 알 수 있다

Boolean (논리형) 타입

Boolean 타입은 논리 요소를 나타내며 참, 거짓을 표현하는 데이터 타입이다. True 혹은 False 두 가지의 값을 가질 수 있다

null 타입

null 타입은 의도적으로변수에 값이 없다는 것을 명시할 때 사용한다

null 타입의 typeOf 연산 결과는 null이 아니라 object이므로 주의하며 대소문자를 구별하므로 null은 Null 혹은 NULL등과 다르다. 따라서 null 타입을 확인할 때믄 typeOf 연산자 대신 일차 연산자인 ‘===’를 사용하여야 한다

Undefined 타입

Undefined 데이터 타입은 선언 이후 값을 할당하지 않은 변수는 undefined값을 가진다. 어떤 변수를 만들고 그 값을 정의해주지 않았을때나 존재하지 않는 객체 프로퍼티에 접근할 경우 undefined가 반환된다

null vs undefined

  • undefined는 단어의 의미 그대로 정의되지 않음 / 값이 대입되지 않은 상태를 위해 사용
  • null 값은 undefined와 다르게 의도적으로 값이 없음을 표현하고 싶을 때 대입

Symbol 타입

Symbol 타입은 ES6부터 새로 생긴 데이터 타입이며 고유하고 변경 불가능한 유일한 값을 생성할 때 사용된다. 값 자체의 확인이 불가하여 외부로 노출되지 않으며 주로 이름의 충돌 위험이 없는 유일한 객체의 Property Key를 만들기 위해 사용된다

// 심볼 key는 이름의 충돌 위험이 없는 유일한 객체의 프로퍼티 키
var key = Symbol('key');
console.log(typeof key); 	// symbol

var obj = {};
obj[key] = 'value';
console.log(obj[key]);  	// value

객체 (Object) 타입

Object 데이터 타입은 복잡한 형태의 값들이 묶여있는 데이터를 의미한다 즉, 데이터와 그 데이터에 관련된 동작(절차, 방법, 기능)을 모두 포함할 수 있는 개념적 존재이다.

  • Property와 Method를 포함할 수 있는 독립적 주체

JavaScript는 객체 기반의 스크립트 언어로 이루고 있는 거의 모든 것이 객체이며 타입을 제외한 나머지 값들(배열, 함수, 정규표현식)은 모두 객체이다

 

 

출처 : 아래의 사이트들을 보면서 큰 공부 하였습니다

https://koonsland.tistory.com/115

https://velog.io/@surim014/웹을-움직이는-근육-JavaScript란-무엇인가-part.2

https://curryyou.tistory.com/182

https://developer.mozilla.org/ko/docs/Web/JavaScript/Data_structures#객체

https://developer.mozilla.org/ko/docs/Web/JavaScript/Guide/Grammar_and_types