모자딥 6장 데이터 타입

릿·2023년 1월 5일
0

6. 데이터 타입

자바스크립트는 7개의 데이터타입을 제공하고, 데이터타입은 원시타입과 객체타입으로 분류할 수 있다.

6.1 숫자 타입


자바스크립트는 하나의 숫자타입만 존재한다.
var integer = 10; // 정수
var double = 10.12; // 실수
var negative = -20; // 음의 정수

자바스크립트는 2진수, 8진수, 16진수를 표현하기 위한 데이터 타입을 제공하지 않는다.

var binary = 0b01000001; // 2진수
var octal = 0o101; // 8진수
var hex = 0x41; // 16진수

// 표기법만 다를 뿐 모두 같은 값이다
console.log(binary); // 65
console.log(octal); // 65
console.log(hex); // 65

자바스크립트는 모든 수를 실수로 처리한다.

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

추가적으로 세 가지 특별한 값도 표현할 수 있다.

  • Infinity : 양의 무한대
  • -Infinity : 음의 무한대
  • NaN : 산술 연산 불가 (not-a-number)
console.log(10 / 0) // Infinity
console.log(10 / -0) // -Infinity
console.log(1 * 'String') // NaN

6.2 문자열 타입


문자열은 작은따옴표(''), 큰따옴표(""), 또는 백틱(``, ES6)으로 텍스트를 감싼다.
// 문자열 타입
var string;
string = '문자열'
string = "문자열"
string = `문자열`

string = '작은따옴표로 감싼 문자열 내의 "큰따옴표"는 문자열로 인식된다.';
string = "큰따옴표로 감싼 문자열 내의 '작은따옴표'는 문자열로 인식된다.";

줄바꿈 등의 공백을 사용하려면 이스케이프 시퀀스를 사용해야 한다.

문자열 연산자 +을 사용해 연결할 수 있다.

var first = 'Ung-mo';
var last = 'Lee';

console.log('My name is '+ first + ' ' + last + '.');

6.3 템플릿 리터럴


템플릿 리터럴은 ES6부터 도입된 문자열 표기법으로, 멀티라인 문자열/표현식삽입/태그드탬플릿 등 문자열 처리기능을 제공한다.

6.3.1 멀티라인 문자열

이스케이프 시퀀스를 사용하지 않고도 줄바꿈이 허용되며, 모든 공백도 있는 그대로 적용된다.

var template = `<ul>
  <li><a href="$">Home</a></li>
<ul>`;

console.log(template);

// 출력 결과
<ul>
  <li><a href="#">Home</a></li>
</ul>

6.3.2 표현식 삽입

표현식으로 문자열을 삽입하려면 ${}로 표현식을 감싼다.

var first = 'Ung-mo';
var last = 'Lee';

console.log(`My name is ${first} ${last}.`);

6.4 불리언 타입


불리언 타입의 값은 논리적 참, 거짓을 나타내는 true, false뿐이다.
var foo = true;
console.log(foo); // true

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

6.5 undefined타입


undefined는 자바스크립트 엔진이 변수를 초기화 할 때 사용하는 값이다.

6.6 null타입


null은 변수에 값이 없다는 것을 의도적으로 명시할 때 사용한다. 변수의 값을 비울 때도 사용된다. (권장되지 않는 방법)
var foo = 'Lee';

// 이전 참조를 제거. foo변수는 더 이상 'Lee'를 참조하지 않는다.
foo = null;

6.7 심벌 타입


변경 불가능한 원시 타입의 값이다. 객체의 유일한 프로퍼티 키를 만들기 위해 사용하며, Symbol함수를 호출해 생성한다.
// 심벌 값 생성
var key = Symbol('key');
console.log(typeof key); // symbol

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

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

33장 참조

6.8 객체 타입


자바스크립트는 객체 기반의 언어이며, 자바스크립트를 이루고 있는 거의 모든 것이 객체이고, 지금까지 살펴본 6가지 데이터 타입 이외의 값은 모두 객체 타입이다.

11장 참조

6.9 데이터 타입의 필요성


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

6.10 동적 타이핑


6.10.1 동적타입언어와 정적타입언어

정적타입언어 :

변수를 선언할 때 데이터 타입을 사전에 선언하는 C나 JAVA같은 언어

동적타입언어 :

변수의 할당에 의해 타입이 결정되는 자바스크립트, 파이썬, PHP, 루비 등의 언어

6.10.2 동적타입언어와 변수

값을 확인하기 전에는 변수의 타입을 확신할 수 없다. 그리고 개발자의 의도와는 상관없이 자바스크립트 엔진에 의해 암묵적으로 타입이 자동적으로 변환되기도 한다.

profile
항상 재밌는 뭔가를 찾고 있는 프론트엔드 개발자

0개의 댓글