728x90
반응형
자바스크립트(ES6)는 7개의 데이터 타입을 제공한다. 7개의 데이터 타입은 원시 타입과 객체 타입으로 분류할 수 있다.
구분 | 데이터 타입 | 설명 |
원시 타입 | 숫자 타입 | 숫자. 정수와 실수 구분 없이 하나의 숫자 타입만 존재 |
문자열 타입 | 문자열 | |
불리언 타입 | 논리적 참(true)과 거짓(false) | |
undefined 타입 | var 키워드로 선언된 변수에 암묵적으로 할당되는 값 | |
null 타입 | 값이 없다는 것을 의도적으로 명시할 때 사용하는 값 | |
심벌 타입 | ES6에서 추가된 7번째 타입 | |
객체 타입 | 객체, 함수, 배열 등 |
숫자 타입
- 모든 수를 실수로 처리한다.
- Infinity, -Infiniy, NaN 을 제공한다. 자바스크립트는 대소문자를 구별하므로 다르게 쓰면 인식하지 못한다.
문자열 타입
- 문자열은 작은따옴표(''), 큰따옴표(""), 백틱(``)으로 텍스트를 감싼다. -> 감싸지 않을 경우 문자열로 인식하지 않는다.
- 작은따옴표로 감싼 문자열 내의 큰따옴표는 문자열로 인식된다. -> 그 반대도 가능.
- 백틱으로 감싼 문자열은 템플릿 리터럴이라고 한다.
var template = `<ul>
<li><a href="#">Home</a></li>
</ul>`
console.log(template);
템플릿 리터럴 내에서는 이스케이프 시퀀스를 사용하지 않고도 줄바꿈이 허용되며, 모든 공백도 있는 그대로 적용된다.
템플릿 리터럴은 표현식을 삽입하는 것도 가능하다.
var first = 'jeongwook';
var last = 'Lee';
console.log('My name is ' + first + ' ' + last + '.'); // My name is jeongwook Lee.
console.log(`My name is ${first} ${last}.`); // My name is jeongwook Lee.
console.log('1 + 2 = ${1 + 2}'); // 1 + 2 = ${1 + 2}
console.log(`1 + 2 = ${1 + 2}`); // 1 + 2 = 3
불리언 타입
- 불리언 타입의 값은 논리적 참, 거짓을 나타내는 true와 false 뿐이다.
undefined 타입
- undefined 타입의 값은 undefined가 유일하다.
- var 키워드로 선언한 변수는 암묵적으로 undefined로 초기화 된다.
- 변수를 개발자가 의도적으로 undefined로 초기화 하는 것은 권장하지 않는다.
null 타입
- null 타입의 값은 null이 유일하다. 변수에 값이 없다는 것을 의도적으로 명시할 때 사용한다.
심벌(symbol) 타입
- 심벌은 ES6에서 추가된 7번째 타입으로, 변경 불가능한 원시 타입의 값이다. 심벌 값은 다른 값과 중복되지 않는 유일무이한 값이다.
- 심벌은 Symbol 함수를 호출해 생성한다.
- 자세한 것은 나중에 다룬다고 한다.
var key = Symbol('key');
console.log(typeof key); // symbol
var obj = {};
obj[key] = 'value';
console.log(obj[key]); // value
객체 타입
- 지금까지 살펴본 6가지 데이터 타입 이외의 값은 모두 객체 타입이다. 자세한건 나중에 더 살펴본다고 한다.
정적 타입 언어는 변수를 선언할 때 데이터 타입을 사전에 선언해야 한다. 이에 반해 자바스크립트는 동적 타입 언어이다. 변수의 선언이 아닌 할당에 의해 타입이 정해지고 재할당에 의해 언제든지 타입이 동적으로 변할 수 있다. 하지만 이러한 동적 타입 언어는 변수 값이 언제든지 변경될 수 있기 때문에 변화하는 변수값을 추적하기 어려운 면이 있다. 때문에 사용자가 변수를 사용할때 신경을 잘 써야 한다.
728x90
반응형
'Study > Javascript 왕초보' 카테고리의 다른 글
[Javascript] 9장 타입 변환 (deep dive) (0) | 2022.05.11 |
---|---|
[Javascript] 8장 제어문 (deep dive) (0) | 2022.05.09 |
[Javascript] 7장 연산자 (deep dive) (0) | 2022.05.09 |
[Javascript] 4장 변수 (deep dive) (0) | 2022.04.29 |
자바스크립트 왕초보 공부 시작 (4) | 2022.04.29 |
댓글