[DeepDiveJS] 06장 데이터 타입

소히·2022년 8월 11일
0

DeepDiveJS

목록 보기
4/11
post-thumbnail

06. 데이터 타입

데이터 타입이란, 값의 종류를 말한다.
자바스크립트의 모든 값은 데이터 타입을 갖는다.

숫자 타입

자바스크립트는 다른 언어와는 다르게 하나의 숫자 타입(모든 수가 실수)만 존재한다.

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

Infinity : 양의 무한대
-Infinity : 음의 무한대
NaN : 산술 연산 불가(not-a-number)

문자열 타입

문자열 타입 텍스트 데이터를 나타내는 데 사용.
자바스크립트의 문자열은 원시 타입이고 변경 불가능한 값이다.

템플릿 리터럴

백틱을 사용하여 문자열을 표현한다.
멀티라인 문자열, 표현식 삽입, 태그드 템플릿 등 편리한 문자열 처리 기능을 제공 한다.

표현식 삽입

${}으로 표현식을 감싼다.
문자열 연산자보다 가독성이 좋고 간편하게 문자열을 조합할 수 있다.

let first = 'sarah';
let last = 'kim';
console.log(`My name is ${first} ${last}`);
// My name is sarah kim

불리언 타입

논리적 참, 거짓을 나타내는 truefalse 뿐인 값이다.

  • 조건문에서 자주 사용한다.

undefined 타입

변수 선언에 의해 확보된 메모리 공간을 처음 할당이 이뤄질 때까지 빈상태로 두지 않고 자바스크립트 엔진이 undefined로 초기화 한다.
따라서 변수를 선언한 이후 값을 할당하지 않은 변수를 참조하면 undefined를 반환한다.

let foo;
console.log(foo); // undefined

개발자가 의도적으로 할당하기 위한 값이 아니라 자바스크립트 엔진이 변수를 초기화 할 때 사용하는 값이다.
❗️ 만약 변수에 값이 없다는 것을 명시하고 싶을때는 null을 할당해야 한다.
❗️ 변수를 참조했을 때 undefined가 반환된다면 참조한 변수가 선언 이후 값이 할당된 적이 없는, 즉 초기화 되지 않은 변수라는 것을 알 수 있다.

null 타입

  • 변수에 값이 없다는 것을 의도적으로 명시할 때 사용됨.
let foo = 'sarah';
foo = null; // 이전 참조를 제거
  • 함수가 유효한 값을 반환할 수 없는 경우 명시적으로 null을 반환하기도 한다.
    • 📌 예를 들어, document.querySelector 메서드는 조건에
      부합하는 HTML 요소를 검색할 수 없는 경우 에러 대신 null을 반환한다.

심벌 타입

  • ES6에서 추가된 7번째 타입.
  • 변경 불가능한 원시 타입
  • 다른 값과 중복되지 않는 유일무이한 값

Symbol 함수를 호출해 생성한다.

// 심벌 값 생성
let key = Symbol('key');
console.log(typeof key) // symbol

// 객체 생성
let obj = {};

// 이름이 충돌할 위험이 없는 유일무이한 값인 심벌을 프로퍼티 키로 사용한다.
obj[key] = 'value';
console.log(obj[key]); // value

데이터 타입의 필요성

  • 값을 저장할 때 확보해야 할 메모리 공간의 크기를 결정하기 위해
    변수에 할당되는 값의 데이터 타입에 따라 메모리 공간의 크기가 다름
  • 값을 참조할 때 한번에 읽어 들여야 할 메모리 공간의 크기를 결정하기 위해
  • 메모리에서 읽어 들인 2진수를 어떻게 해석할지 결정하기 위해

동적 타이핑

✏️ 자바스크립트의 변수는 선언이 아닌 할당에 의해 타입이 결정된다. 그리고 재할당에 의해 변수의 타입은 언제든지 동적으로 변할 수 있다.

typeof 연산자는 변수의 데이터 타입을 반환한다.
변수의 데이터 타입을 반환하는 것이 아니라 변수에 할당된 값의 데이터 타입을 반환하는 것이다.

But, 동적 타입 언어는 유연성은 높지만 신뢰성은 떨어진다. 변수의 타입이 고정되어 있지 않고 언제든지 동적으로 변하기 때문이다.

변수보다는 상수(const)를 사용하여 값의 변경을 억제하는 방법도 있다.

0개의 댓글

관련 채용 정보