[Deep Dive] 데이터 타입

Hyeonjun Moon·2021년 8월 16일
1
post-thumbnail

해당 게시물은 "모던자바스크립트 Deep Dive(위키북스)" 저서를 참고 및 인용 하였음을 알려드립니다.

🔎  데이터 타입

  • 자바스크립트의 모든 값데이터 타입을 갖는다.
  • 자바스크립트 (ES6)는 7개의 데이터 타입을 제공한다.


🔖  1.  숫자 타입

  • 자바스크립트는 하나숫자 타입만 존재한다.
  • 모든 수를 실수로 처리하며, 정수만 표기하기 위한 데이터 타입은 존재하지 않는다.
// 모두 숫자 타입이다.
var interger = 10; // 상수
var double = 10.12; // 실수
var negative = -20; // 음의 정수
  • 숫자 타입은 추가적을 세 가지 특별한 값도 표현할 수 있다.
    Infinity : 양의 무한대
    -Infinity : 음의 무한대
    NaN : 산술 연산 불가 (not-a-number)
console.log(10 / 0);        //Infinity
console.log(10 / -0);       //-Infinity
console.log(1 * 'string');  // NaN

🔖  2.  문자열 타입

  • 텍스트 테이터를 나타내는 데 사용한다.
  • 작은따옴표(''), 큰따옴표(""), 백틱(``)으로 텍스트를 감싼다.
//문자열 타입
var string;
string = '문자열'; // 작음따옴표
string = "문자열"; // 큰따옴표
string = `문자열`; // 백틱(ES6)

🔖  3.  템플릿 리터럴

  • ES6부터 새로운 문자열 표시법 도입
  • 멀티라인 문자열, 표현식 삽입, 태그드 템플릿등 편리한 문자열 처리 기능 제공
  • 작은따옴표('') 또는 큰따옴표("") 대신 백틱(``)을 사용해 표현한다.

📍   멀티라인 문자열

  • 🚫 일반 문자열 내에서는 줄바꿈(개행)이 허용되지 않는다.
  • 일반 문자열 내에서 줄바꿈 등의 공백을 표현하려면 이스케이프 시퀀스를 사용해야 한다.

📍   표현식의 삽입

  • 문자열은 문자열 연산자 (+) 를 사용하여 연결할 수 있다.
var first = 'Hyeon-jun';
var last = 'Moon';

// ES5 : 문자열 연결
console.log('My name is ' + first+ '' + last + '.'); 
// My name is Hyeon-jun Moon.
  • 템플릿 리터럴 내에서는 표현식 삽입(expression interpoation)을 통해 간단히 문자열을 삽입할 수 있다.
var first = 'Hyeon-jun';
var last = 'Moon';

// ES6 : 표현식 삽입
console.log(`My name is ${first} ${last}.`); 
// My name is Hyeon-jun Moon.

🔖  4.  불리언 타입

  • 논리적 참, 거짓을 나타내는 truefalse뿐이다.
var foo = true;
console.log(foo); // true

foo = false;
console.log(foo); // false

🔖  5.  undefined 타입

  • undefined 가 유일하다.
  • var 키워드로 선언한 변수는 암묵적으로 undefined로 초기화
var foo;
console.log(foo); // undefined

🔖 6.  null 타입

  • null이 유일하다.
  • undefined와 차이점은 개발자가 의도적으로 변수에 값이 없음을 나타낼 때 사용된다는 것이다.

🔖  7.  심벌 타입

  • 다른 값과 중복되지 않는 유일무이한 값
  • 이름이 충돌한 위험이 없는 객체의 유일한 프로퍼티 키를 만들이 위해 사용
// 심벌 값 생성
var key = Symbol('key');
console.log(typeof keey); // symbol

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

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

🔖  8.  데이터 타입의 필요성

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

🔖  9.  동적 타이핑

📍   정적 타입

  • static/strongtype 언어
  • 데이터 타입을 사전에 선언
  • 🚫 변수의 타입을 변경할 수 없다.
  • 변수에 선언한 타입에 맞는 값만 할당
  • 컴파일 시점에 타입 체크를 수행한다.
  • C, C++, Java, Kotlin, Go, Haskell, Rust, Scala

📍   동적 타입

  • dynamic/weak type 언어
  • 타입을 선언하지 않는다.
  • 데이터 타입의 값을 자유롭게 할당 가능
  • 선언이 아닌 할당에 의해 타입이 결정(타입 추론 type inference) 된다.
  • 재할당에 의해 변수의 타입은 언제든지 동적으로 변할 수 있다.
    (동적 타이핑 dynamic typing)
  • 자바스크립트, Python, PHP, Ruby, Lisp, Perl
profile
TIL => https://velog.io/@quato-til

0개의 댓글