자바스크립트의 데이터 타입

boyeonJ·2023년 6월 12일
0

JavaScript Basic

목록 보기
3/24
post-thumbnail

자바스크립트의 타입

자바스크립트는 7개의 데이터 타입을 제공합니다.

6개의 원시타입 + 객체타입
아래는 자바스크립트의 원시 타입(Primitive Types)과 객체 타입(Object Types)을 표로 정리한 것입니다:

원시 타입설명예시
undefined값이 할당되지 않은 상태를 나타냄let x;
null값이 존재하지 않음을 나타냄let y = null;
boolean논리적인 참(True) 또는 거짓(False) 값을 나타냄let isTrue = true;
number숫자 값을 나타냄let count = 10;
string문자열 값을 나타냄let message = "Hello";
symbol고유하고 변경 불가능한 값을 나타냄let id = Symbol();
bigint큰 정수 값을 나타냄let bigNumber = 9007199254740991n;

객체 타입설명예시
Object객체를 나타내는 일반적인 타입let person = { name: "John", age: 30 };
Array순서가 있는 값의 컬렉션을 나타냄let numbers = [1, 2, 3];
Function코드의 실행 가능한 블록을 나타냄function greet() { console.log("Hello!"); }
Date날짜와 시간 정보를 나타냄let now = new Date();
RegExp정규 표현식을 나타냄let pattern = /[a-z]+/;
Map키-값 쌍을 가지는 컬렉션을 나타냄let map = new Map();
Set고유한 값들의 컬렉션을 나타냄let set = new Set();

숫자 타입

정수, 실수 등등 모두 하나의 숫자타입으로 표현한합니다. 숫자 타입 값은 배정밀도 64비트 부동소수점 형식을 따릅니다.

64비트(8바이트)의 메모리 공간을 사용하여 부동소수점 숫자를 표현합니다. 이 형식은 부호(Sign), 지수(Exponent), 가수(Significand/Mantissa)의 세 부분으로 구성됩니다.

  • 부호(Sign)는 숫자가 양수인지 음수인지를 나타냅니다. 1비트로 표현되며, 0은 양수, 1은 음수를 나타냅니다.
  • 지수(Exponent)는 숫자의 크기와 위치를 조절하는 역할을 합니다. 11비트로 표현되며, 숫자의 지수 부분을 표현합니다.
  • 가수(Significand/Mantissa)는 숫자의 정밀도와 소수점 이하 자릿수를 나타냅니다. 52비트로 표현되며, 숫자의 가수 부분을 표현합니다.

참조시 모두 10진수로 해석

자바스크립트는 2진수, 8진수, 16진수를 표현하기 위한 데이터 타입이 없기 때문에 모두 참조하면 10진수로 해석된다.

let binary = 0b1010; // 2진수 리터럴, 10진수 10으로 해석됨
let octal = 0o12; // 8진수 리터럴, 10진수 10으로 해석됨
let hexadecimal = 0xA; // 16진수 리터럴, 10진수 10으로 해석됨

console.log(binary); // 10
console.log(octal); // 10
console.log(hexadecimal); // 10

모든 수를 실수로 처리

사실 정수로 표현한다해도 현실은 실수이다. 따라서 정수로 표시되는 수끼리 나누더라도 실수가 나올 수 있다.

console.log(1===1.0) //true

특별한 값 3가지

Infinity : 양의 무한대
-Infinity : 음의 무한대
NaN : 산술 연산 불가


문자열 타입

문자열은 0개 이상의 16비트 유니코드 문자(UTF-16)의 집합으로 전 세계 대부분의 문자를 표현할 수 있다.

작은따음표, 큰 따음표, 백틱으로 감쌀수 있으며 가장 일반적인건 작은따음표이다. 이렇게 감싸지 않으면 엔진은 식별자가 키워드 같은 토큰으로 인식한다.


템플릿 리터럴

``으로 사용가능

  • 멀티라인이 가능
  • 표현식을 삽입할 수 있다. 이 안에 들어가는 표현식이 표현식이 아닐경우에는 그냥 문자열로 표시해줌

불리언 타입

ture, false


undefined 타입

  • 자바스크립트가 초기화한 값
  • 자바스크립트 엔진이 초기화 해줬다는 것을 표시해준 값이기 때문에 개발자가 명시적으로 할당해주면 혼란이 생길 수 있어서 피해야 한다.

null 타입

  • 의도적 부제 : 의도적으로 값을 넣지 않았다는것을 알려주기 위해 사용
  • 함수가 유효하지 않은 것을 알려주기 위해 사용
  • 참조를 끊을때 사용, null로 참조를 끊으면 가비지 켈렉터가 회수한다.

심벌 타입

  • 객체에 어떤 유일한 프로퍼티를 넣어주기 위한 값
  • 사용할때는 아래처럼 쓴다.
    let key = Symbol();
    obj = {}
    obj.[key] = value;

그냥 문자열이랑 다른건, 유일하다.


객체 타입

객체, 함수, 배열...


데이터 타입의 필요성

데이터 타입이 필요한 이유는 다음과 같습니다.

메모리 공간의 확보 : 값을 저장할 때 확보해야 하는 메모리 공간의 크기를 결정
메모리 크기 결정 : 값을 참조할때 한번에 읽어 들여야 할 메모리 크기를 결정
2진수를 어떻게 해석 : 메모리에서 읽어 들인 2진수를 어떻게 해석 할지 결정


추가내용

BigInt

Number 타입보다 큰 2^53 -1 보다 큰 정수
주로 금융데이터 용도로 사용
생성하는 방법

  • 리터럴(정수n) : 10n
  • 함수 : bigInt(10)

주의할점

  • Math 객체 사용 불가능
  • Number 혼용 연산 불가(혼용하려면 number를 형변환을 해줘야 한다. 그런데 형변환 하면 정확성이 떨어지기 때문에 사용하면 안됩니다.)
    type은 'bigint'

특징

  • New 연산자로 생성불가
    string number랑 객체 래퍼로 생성할 수 있는데

String, Number, boeale

new로 생성가능(권장하지는 않음)
'abc'.toUpper 이렇게 하면 자동으로 객체로 엔진이 만들어줌..

근데 나머지는 New로 하면 안됨
New로 만들어진 이유는??? =>

0개의 댓글