- 데이터 타입은 값의 종류를 말한다.
- 자바스크립트의 모든 값은 데이터 타입을 갖는다.
- 자바스크립트는 7개의 데이터 타입을 제공한다.
구분 | 데이터 타입 | 설명 |
원시타입 | 숫자 타입 | 숫자. 정수와 실수 구분 없이 하나의 숫자 타입만 존재 |
문자열 타입 | 문자열 | |
불리언 타입 | 논리의 참(true)와 거짓(false) | |
undefined 타입 | var 키워드로 선언된 변수에 암묵적으로 할당되는 값 | |
null 타입 | 값이 없다는 것을 의도적으로 명시할 때 사용하는 값 | |
심벌 타입 | ES6에서 추가된 7번째 타입 | |
객체 타입 | 객체, 함수, 배열 등 |
- [6.1] 숫자 타입
- 자바스크립트는 모든 수를 실수로 처리하며, 정수만 표현하기 위한 데이터 타입이 별도로 존재하지 않는다.
- var integer = 10;
- var double = 10.12;
- var negative = -20;
- 숫자 타입은 추가적으로 세 가지 특별한 값도 표현할 수 있다.
- Infinity: 양의 무한대
- -Infinity: 음의 무한대
- NaN: 산술 연술 불가
- 자바스크립트는 대소문자를 구별한다.
- NaN을 NAN, Nan, nan과 같이 표현하면 에러가 발생한다.
- [6.2] 문자열 타입
- 문자열은 작은따옴표(' '), 큰따옴표(" "), 백틱(` `)으로 텍스트를 감싼다.
- 문자열을 따옴표로 감싸지 않으면 자바스크립트 엔진은 키워드나 식별자 같은 토큰으로 인식한다.
- 자바스크립트의 문자열은 원시 타입이며, 변경 불가능한 값이다.
- 문자열이 생성되면 그 문자열을 변경할 수 없다는 것을 의미한다.
- [6.3] 템플릿 리터럴
- 템플릿 리터럴은 런타임에 일반 문자열로 변환되어 처리된다.
- 템플릿 리터럴은 백틱(` `)을 사용해 표현한다.
- 일반 문자열과 달리 템플릿 리터럴 내에서는 이스케이프 시퀀스를 사용하지 않고도 줄바꿈이 허용되며, 모든 공백도 있는 그대로 적용된다.
- 문자열은 문자열 연산자 +를 사용해 연결할 수 있다. +연산자는 피연산자 중 하나 이상이 문자열인 경우 문자열 연결 연산자로 동작한다. 그 외의 경우는 덧셈 연산자로 동작한다.
- var first = 'Ung-mo'
- var last = 'Lee'
- console.log('My name is ' + first + ' ' + last + '.');
- //My name is Ung-mo Lee.
- 템플릿 리터럴 내에서는 표현식 삽입을 통해 간단히 문자열을 삽입할 수 있다.
- var first = 'Ung-mo';
- var last= 'Lee';
- console.log(`My name is ${first} ${last}.`);
- //My name is Ung-mo Lee.
- 표현식을 삽입하려면 ${ }으로 표현식을 감싼다.
- 이때 표현식의 평가 결과가 문자열이 아니더라도 문자열로 타입이 강제로 변환되어 삽입된다.
- 표현식 삽입은 반드시 템플릿 리터럴 내에서 사용해야 한다.
- [6.4] 불리언 타입
- 불리언 타입의 값은 논리적 참, 거짓을 나타내는 true와 false뿐이다.
- [6.5] undefined 타입
- 변수 선언에 의해 확보된 메모리 공간을 처음 할당이 이뤄질 때까지 빈 상태(쓰레기 값이 들어있는)로 내버려두지 않고 자바스크립트 엔진이 undefined로 초기화한다.
- 변수를 참조했을 때 undefined가 반환된다면 초기화되지 않은 변수라는 것을 간파할 수 있다.
- [6.6] null 타입
- 프로그래밍 언어에서 null은 변수에 값이 없다는 것을 의도적으로 명시할 때 사용한다.
- 변수에 null을 할당하는 것은 변수가 이전에 참조하던 값을 더 이상 참조하지 않겠다는 의미다.
- [6.7] 심벌 타입
- 심벌은 변경 불가능한 원시 타입의 값이다.
- 심벌 값은 다른 값과 중복되지 않는 유일무이한 값이다.
- 따라서 주로 이름이 충돌할 위험이 없는 객체의 유일한 프로퍼티 키를 만들기 위해 사용한다.
- 심벌은 Symbol함수를 호출해 생성한다.
- [6.9] 데이터 타입의 필요성
- 값을 저장할 때 확보해야 하는 메모리 공간의 크기를 결정하기 위해
- 값을 참조할 때 한 번에 읽어 들여야 할 메모리 공간의 크기를 결정하기 위해
- 메모리에서 읽어 들인 2진수를 어떻게 해석할지 결정하기 위해
- [6.10] 동적 타이핑
- 자바스크립트는 변수를 선얼할 때 타입을 선언하지 않는다.
- var, let, const 키워드를 사용해 변수를 선언할 뿐이다.
- 자바스크립트의 변수는 미리 선언한 데이터 값만 할당할 수 있는 것이 아니라 어떠한 데이터 값도 자유롭게 할당할 수 있다.
- 자바스크립트의 변수는 선언이 아닌 할당에 의해 타입이 결정(타입 추론)된다. 그리고 재할당에 의해 변수의 타입은 언제든지 동적으로 변할 수 있다.
- =>동적 타이핑
- 동적 타입 언어의 변수는 값을 확인하기 전에는 타입을 확신할 수 없다.
- 자바스크립트엔진에 의해 암묵적으로 타입이 변환되기도 한다.
- 동적 타입 언어는 유연성은 높지만 신뢰성은 떨어진다.
'[자바스크립트]' 카테고리의 다른 글
[JavaScript/DeepDive]09.타입 변환과 단축 평가 (0) | 2021.05.10 |
---|---|
[JavaScript/DeepDive]08.제어문 (0) | 2021.05.09 |
[JavaScript/DeepDive]07.연산자 (0) | 2021.05.08 |
[JavaScript/DeepDive]05.표현식과 문 (1) | 2021.05.05 |
[JavaScript/DeepDive]04.변수 (0) | 2021.05.05 |