8 Type
- Primitive Type
- number : 모든 수가 실수
- string : 문자열
- boolean : true or false
- undefinded: var keyword로 선언된 변수에 암묵적으로 할당되는 값
- null : 값이 없다는 것을 의도적으로 명시
- symbol (ES6)
- Bigint (ES11) : 숫자값 표현 최대치보다 큰 정수를 표현
- 정수 리터럴 뒤에 n을 붙이거나, Bigint함수 호출
- Example) 10n or Bigint(10)
- Object/reference Type
- object, function, array
- NaN : 산술 연산 불가
- Infinity /-Infinity : 양/음의 무한대
String
- JS에서 string은 primitive type이며, immutable value이다.
'' / "" / ``
- 따옴표로 감싸지 않으면 keyword나 idenfier와 같은 token으로 인식함
Templete literal(ES6)
템플릿 리터럴은 런타임에 일반 문자열로 변환되어 처리된다.
multi-line string, expression interpolation, tagged templete 등이 가능하다.
일반 문자열 내에서는 줄바꿈(개행)이 허용되지 않는다. 따라서 일반 문자열 내에서 줄바꿈 등의 공백(white space)을 표현하려면 백슬래시( \ )로 시작하는 escape sequence를 사용해야한다.
- Multi-line string(멀티라인 문자열)
var templete = '<ul>\n\t<li><a href="#">Home</a></li>\n</ul>';
console.log(templete)
/* console :
<li><a href="#">Home</a></li>
*/
하지만 템플리 리터럴 내에서는 이스케이프 시퀀스를 사용하지 않아도 줄바꿈과 공백이 그대로 적용된다.
```javascript
var templete = `<ul>
<li><a href="#">Home</a></li>
</ul>`;
console.log(templete)
/*
<ul>
<li><a href="#">Home</a></li>
</ul>
*/- Expression interpolation(표현식 삽입)
- 표현식 삽입은 ${ }으로 표현식을 감싼다. 이때 evaluate 결과가 string이 아니더라도 string으로 강제변환 되어 삽입된다.
var first = 'dong-heon';
var last = 'lee';
console.log(`My name is ${first} ${last}.`);
/* console :
My name is dong-heon lee.
*/
Undefinded Type
- 개발자가 의도적으로 할당하기 위한 값이 아니라 JS 엔진이 변수를 초기화할 때 사용하는 값이다.
- 의도적으로 변수에 할당한다면 undefinde의 본래 취지에 맞지 않을 뿐더러 혼란을 야기할 수 있기 때문에 지양한다.
! C언어 같은 경우 선언과 정의의 개념이 명확하나, JavaScript에서는 declaration과 definition이 불명확하다. ECMAScript 사양에서는 변수는 '선언한다'라고 표현하고, 함수는 '정의한다'라고 표현한다.
null Type
- Intentional absence(의도적 부재)할 때 사용한다.
- 변수에 null을 할당하겠다는 것은 변수가 이전에 참조하던 값을 더이상 참조하지 않겠다는 의미
symbol Type
- 변경 불가능한 primitive value.
- 주로 이름이 충돌될 위험이 없는 객체의 유일한 property key를 만들기 위해 사용한다.
- 심벌 이외의 primitive value는 literal를 이용해 생성하지만, symbol은 Symbol 함수를 호출해 생성한다. -> 생성된 값은 외부에 노출되지 않는 중복되지 않는 유일무이한 값
'JavaScript' 카테고리의 다른 글
| 함수형 프로그래밍 패러다임의 좋은 코딩 습관 (0) | 2023.03.11 |
|---|---|
| [YOU DON'T KNOW JS] Chapter2. Call-Site(함수 호출부) (0) | 2022.08.17 |
| [JavaScript] Variable (0) | 2022.08.17 |
| [YOU DON'T KNOW JS] Chapter1. This (0) | 2022.08.16 |
| [Learning React] Chapter2. JavaScript for React.js (0) | 2022.08.14 |