1. 숫자타입
모든 수를 실수로 처리하며, 정수만 표현하기 위한 데이터타입이 별도로 존재하지 않는다.
2진수, 8진수, 16진수를 위한 데이터 타입을 모두 제공하지 않아 값을 참조하면 모두 10진수로 해석된다.
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(binary === octal); //true
console.log(octal === hex); //true
console.log(1*'String');
위를 실행하면 NaN값이 출력되는데, NaN이란 산술연산불가(not-a-number)의 뜻으로
자바스크립트 엔진은 NAN,Nan,nan을 값이아닌 식별자로 해석한다.
2. 문자열타입
var string;
string = '문자열'; //작은따옴표
string = "문자열"; //큰따옴표
string = `문자열`; //백틱
문자열을 따옴표로 감싸지않으면 자바스크립트 엔진은 키워드나 식별자 같은 토큰으로 인식한다.
3. 템플릿 리터럴
ES6부터 도입된 새로운 문자여 표기법이다.
일바적인 따옴표 대신 백틱(``) 을 사용해 표현한다.
\' 따옴표 single quote
\" 쌍따옴표 double quote
\\ 역슬래시 single backslash
\b 백스페이스 backspace
\r 캐리지 리턴 carriage return
\n 줄바꿈 newline
\s 스페이스 space
\t 수평탭 tab
\v 수직탭 tab
\f 폼피드 form feed
\0 null
예 ->
var template = `<ul>\n\t<li><a href = "#">Home</a></li>\n<ul>`;
표현식 삽입을 통해 간단히 문자열을 삽입할 수 있다. + 연산자보다 가독성도 좋고 간편하게 문자열을 조합할 수 있다.
템플릿 리터럴은 ${}로 감싼다.
4. 불리언 타입
5. undefined 타입
const foo;
console.log(foo); //undefined
변수 선언에 값을 할당하지 않아도 확보된 메모리 공간을 처음 할당이 이뤄질 때까지 빈 상태가 아니라 자바스크립트 엔진이 undefined로 초기화한다.
(정의되지 않은 이라는 뜻으로 null과 다르다.)
6. null타입
undefined와 달리 프로그래머가 의도적으로 값이 없다는 것을 명시할 때 사용한다.
const foo = "lee";
foo = null;
lee가 할당된 변수에 null을 다시 할당하면 이전에 참조했던 값을 명시적으로 제거하여 더 이상 참조하지 않겠다는 의미이다.
그러므로 null이 할당되고 나서는 더 이상 lee를 참조하지 않는다.
위의 예시는 예시일뿐, 유용해보이지는 않는다고 한다.
차라리 변수의 스코프를 좁게 만들어 변수 자체를 재빨리 소멸시키는 편이 낫다.
7. symbol타입
- 심벌 값은 다른 값과 중복되지 않는 유일무이한 값이다. 따라서 주로 이름이 충돌할 위험이 없는 객체의 유일한 프로퍼티 키를 만들기 위해 사용한다.
- 심벌 이외의 원시 값은 리터럴을 통해 생성하지만 심벌의 값은 함수를 통해 생성한다.
var key = Symbol('key'); // 심벌 값 생성
var obj; // 객체 생성
obj[key] = 'value'; // 이름이 충돌할 위험이 없는 유일무이한 값인 심벌의 프로퍼티 키를 사용한다.
console.log(obj[key]);
🌪Symbol은 아직 사용해본 적이 없어서 잘 모르겠다 ..
8. 객체타입
자바스크립트를 이루고 있는 모든 것이 객체이다.
9. 테이터 타입의 필요성
- 메모리 공간의 크기를 결정하기 위해
- 메모리 공간의 크기를 결정하기 위해
- 2진수를 어떻게 해석할지 결정하기 위해
정적타입언어는 변수선언 할 때 타입을 선언하지만, 자바스크립트는 var, let, const키워드를 사용해 변수를 선언한다.
10. 동적 타이핑
변수는 선언이 아닌 할당에 의해 타입이 결정(타입추론)된다. 그리고 재할당에 의해 변수의 타입은 언제든지 동적으로 변할 수 있다.
이러한 특징을 동적 타이핑이라 하며, 자바스크립트를 동적타입언어라 한다.
변수는 타입을 갖지 않으나, 값은 타입을 갖는다.
현재 변수에 할당되어 있는 값에 의해 변수의 타입이 동적으로 결정된다고 표현하는것이 더 적절하다.
변수의 값을 추적하기 어려우며, 유연성은 높지만 신뢰성은 떨어진다는 단점을 가지고 있다.
'STUDY > 모던 자바스크립트 Deep Dive' 카테고리의 다른 글
[모던 자바스크립트 Deep Dive] 09장 타입 변환과 단축 평가 (0) | 2022.03.11 |
---|---|
[모던 자바스크립트 Deep Dive] 08장 제어문 (0) | 2022.03.11 |
[모던 자바스크립트 Deep Dive] 07장 연산자 (0) | 2022.03.10 |
[모던 자바스크립트 Deep Dive] 05장 표현식과 문 (0) | 2022.03.08 |
[모던 자바스크립트 Deep Dive] 04장 변수 (0) | 2022.03.07 |