[JS] 데이터 타입

eunseok·2023년 10월 20일
1

js공부

목록 보기
22/27

자바스크립트의 모든 값은 데이터 타입을 갖고 자바스크립트에서는 7개의 데이터 타입을 제공한다.

  • 원시 타입 : 숫자 타입, 문자열 타입, 불리언 타입, undefined 타입, null 타입, 심벌 타입
  • 객체 타입 : 객체, 함수, 배열 등

숫자 타입

자바스크립트에서는 독특하게 하나의 숫자 타입만 존재한다.

모든 수를 실수로 처리하며, 정수만 표현하기 위한 데이터 타입은 존재하지 않는다.

2진수던 8진수던 16진수이던 값들을 참조하면 결국 10진수로 해석된다.

자바스크립트의 특별한 세가지 숫자 타입이 있는데 이는 Infinity, -Infinity, NaN이다.

문자열 타입

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

문자열은 작은따옴표(’’), 큰따옴표(””) 또는 백틱(``)으로 텍스트를 감싼다.

자바스크립트에서 문자열은 불변하다.

자바스크립트의 불변성

자바스크립트에서 문자열은 "불변(immutable)"하다는 것은, 한 번 생성된 문자열은 변경될 수 없다는 뜻입니다. 즉, 문자열의 특정 위치에 있는 문자를 다른 문자로 바꾸거나, 문자열에 새로운 문자를 추가하거나 제거하는 등의 작업을 직접적으로 할 수 없습니다.

예를 들어 아래와 같은 코드를 실행해보면 이해할 수 있습니다.

let str = "Hello";
str[0] = 'h';
console.log(str);// 출력: "Hello"

위 코드에서 'H'를 'h'로 변경하려고 시도했지만, 실제로 str 변수의 값이 변경되지 않았습니다. 이는 자바스크립트에서 문자열이 불변하기 때문입니다.

하지만 이것이 우리가 전혀 새로운 값을 가진 새로운 문자열을 만들지 못한다는 것을 의미하지는 않습니다. 예를 들어, 아래와 같이 기존의 str 변수에 새로운 값을 할당하는 것은 가능합니다

let str = "Hello";
str = 'hello';
console.log(str);// 출력: "hello"

템플릿 리터럴

ES6부터 도입된 새로운 문자열 표기법이다.

템플릿 리터럴은 멀티라인 문자열, 표현식 삽입, 태그드 템플릿 등 편리한 문자열 처리 기능을 제공한다.

템플릿 리터럴은 백틱을 사용한다.

var template = `Template literal`;
  • 멀티라인 문자열
    일반 문자열 내에서는 줄바꿈이 허용되지 않지만 템플릿 리터럴에서는 가능하다
  • 표현식 삽입
    일반 문자열은 +를 사용하여 문자열을 서로 연결하지만 템플릿 리터럴에서는 ${}으로 간단하게 삽입할 수 있다.
    let a = "a"
     let b = "b"
     console.log(`hello ${a} ${b}.`); // hello a b.

표현식에 연산도 넣을 수 있다.

  • 불리언 타입
    true와 false가 있다.
  • undefined 타입
    자바스크립트에서는 변수를 var 키워드로 선언하였을 때, 암묵적으로 undefined가 된다.
    할당이 이뤄지지 않았을 때 garbage 값으로 두는 것이 아니라 undefined로 초기화시킴
  • null 타입
    null은 변수에 값이 없다는 것을 의도적으로 명시할 때 사용한다.
  • 심벌 타입
    심벌은 ES6에서 추가된 7번째 타입으로, 변경 불가능한 원시 타입의 값이다.
    다른값과 중복되지 않는 유일무이한 값이다.
    따라서 주로 이름이 충돌할 위험이 없는 객체의 유일한 프로퍼티 키를 만들기 위해 사용한다.
  • 객체 타입
    자바스크립트는 객체 기반의 언어이며, 자바스크립트를 이루고 있는 거의 모든 것이 객체이다.

데이터 타입의 필요성

지금까지 알아본 데이터 타입은 왜 필요할까??

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

0개의 댓글