1. 자바스크립트의 데이터 타입
- 자바스크립트는 총 7개의 데이터 타입을 갖는다.
- 원시 타입 : 숫자, 문자열, 불리언, undefined, null, 심벌
- 객체 타입 : 객체, 함수, 배열 등
2. 숫자 타입
- C나 자바의 경우 정수와 실수를 구분해서 int, long, float, double 등 다양한 숫자타입을 제공
- 자바스크립트는 하나의 숫자 타입만 존재함
- 추가적인 3가지
Infinity
: 양의 무한대
-Infinity
: 음의 무한대
NaN
: 산술 연산 불가(not-a-number) => 얘도 숫자 타입
3. 문자열 타입
''
, ""
, ``
으로 텍스트를 감싸서 사용
- c는 문자열 타입을 제공하지 않고 문자의 배열로 문자열을 표현
- 자바는 문자열을 객체로 표현
- 자바스크립트는 원시 타입이며, 변경 불가능한 값(문자열이 생성되면 문자열을 변경할 수 없음)
4. 템플릿 리터럴
- ES6부터 도입된 새로운 문자열 표기법
``
사용
-
멀티라인 문자열 : 이스케이프 시퀀스 없이도 줄바꿈과 공백이 허용
var template = `<ul>
<li><a href="#">Home</a></li>
<ul>`
console.log(template);
------
<ul>
<li><a href="#"></a></li>
</ul>
-
표현식 삽입 : 표현식 삽입은 반드시 리터럴 내에서 사용
var first = "ahyun";
var last = "Lee";
console.log(`my name is ${first} ${last}`); // my name is ahyun Lee
-
태그드 탬플릿
5. 불리언 타입
- 논리적 참, 거짓을 나타내는 true, false를 사용한다.
6. undefined 타입
- undefined타입의 값은
undefined
가 유일하다.
var
키워드로 선언한 변수는 암묵적으로 undefined
로 초기화
- 즉,
undefined
는 개발자가 의도적으로 할당하는 값이 아니라 자바스크립트 엔진이 변수를 초기화할 때 사용하는 값 / 초기화되지 않은 변수라는 것을 알 수 있음
7. null 타입
- null타입의 값은
null
이 유일하다.
- 변수에 값이 없음을 의도적으로 명시할 때 사용
- 즉, 이전에 할당되어 있던 값에 대한 참조를 명시적으로 제거하는 것을 의미한다.
8. 심벌 타입
- ES6에서 추가된 7번째 타입, 변경 불가능한 원시 타입의 값
- 다른 값과 중복되지 않는 유일무이한 값이고 주로 충돌할 위험이 없는 객체의 유일한 프로퍼티 키를 만들기 위해 사용한다.
Symbol()
함수를 호출해서 사용
var key = Symbol('key');
console.log(typeof key); // symbol
var obj = {};
obj[key] = 'value';
console.log(obj[key]); // value
9. 객체 타입
- 자바스크립트는 객체 기반의 언어
- 자바스크립트를 이루고 있는 거의 모든 것이 객체
10. 데이터 타입의 필요성
- 값을 저장할 때 확보해야하는 메모리 공간의 크기를 결정하기 위해
- 값을 참조할 때 한 번에 읽어들여야할 메모리 공간의 크기를 결정하기 위해
- 메모리에서 읽어 들인 2진수를 어떻게 해석할지 결정하기 위해
11. 동적 타이핑
- 동적 타입 언어 vs 정적 타입 언어
- 정적 타입 언어 : C언어, 자바 -> 변수를 선언할 때 할당할 수 있는 값의 데이터 타입을 사전에 선언해야한다.
- 동적 타입 언어 : 자바스크립트 -> 변수를 선언할 때 타입을 선언하지 않는다.
- 자바스크립트의 변수는 선언이 아닌 할당에 의해 타입이 결정된다. (타입 추론)
- 동적 타이핑 : 재할당에 의해 변수의 타입은 언제든지 동적으로 변할 수 있다.
- 동적 타입 언어의 변수는 값을 확인하기 전에는 타입을 확인할 수 없다.
- 그렇기 때문에 유연성은 높으나 신뢰성은 떨어진다.