ES6부터 템플릿 리터럴 이라고 하는 새로운 문자열 표기법 도입
멀티라인 문자열, 표현식 삽입, 태그드 템플릿 등 편리한 문자열 처리 기능을 제공한다
런타임에 일반 문자열로 변환되어 처리 된다
| 이스케이프 시퀀스 | 의미 |
|---|---|
| \0 | Null |
| \b | 백스페이스 |
| \f | 폼 피드, 프린터로 출력할 경우 다음 페이지의 시작 지점으로 이동한다 |
| \n | 개행(LF), 다음 행으로 이동 |
| \r | 개행(CR), 커서를 처음으로 이동 |
| \t | 탭(수평) |
| \v | 탭(수직) |
| \uXXXX | 유니코드, 예를 들어 '\u0041'은 'A' |
| \' | 작은 따음표 |
| \" | 큰 따음표 |
| \ | 백슬래시 |
// + 문자열 연산자로 이용
var first = 'minseok';
var last = 'oh';
console.log('My name is ' + first + ' ' + last + '.'); // My name is minseok oh.
// `` 백틱 사용
console.log(`My name is ${first} ${last}.`); // My name is minseok oh.
// 심벌 값 생성
var key = Symbol('key');
console.log(typeof key);
// 객체 생성
var obj = {};
//이름이 충돌할 위험이 없는 유일무이한 값인 심벌을 프로퍼티 키로 사용한다
obj[key] = 'value';
console.log(obj[key]); // value
ECMAScript 사양에 숫자타입은 배정밀도 64비트 부동소수점 형식을 사용(8바이트) => 문자열과 숫자 타입 규정 / 그 외 타입은 JS 엔진 제조사의 구현에 따라 다를 수 있다
데이터 타입이 필요한 이유
1. 값을 저장할 때 확보해야 하는 메모리 공간의 크기 결정을 위해
2. 값을 참조할 때 한 번에 읽어 들여야 할 메모리 공간의 크기를 결정을 위해
3. 메모리에서 읽어 들인 2진수를 어떻게 해석할지 결정하기 위해
정적 타입 언어(=== 명시적 타입 선언) : 변수를 선언할 때 변수에 할당할 수 있는 값의 종류, 즉 데이터 타입을 사전에 선언해야 한다
동적 타입 언어 : 변수의 선언이 아닌 할당에 의해 타입이 결정(타입 추론) 그리고 재할당에 의해 변수의 타입은 언제든지 동적으로 변한다
동적 타입 언어는 유연성은 높지만 신뢰성은 떨어진다
변수를 사용할 때 주의할 사항
- 변수는 꼭 필요한 경우에 한해 제한적으로 사용한다
(JS는 타입을 잘못 예측해 오류 발생할 가능성이 크다)
- 변수의 유효 범위(스코프)는 최대한 좁게 만들어 변수의부작용을 억제해야 한다(범위가 넓을 수록 변수로 인해 오류 발생확률 증가)
- 전역 변수는 최대한 사용하지 않도록 한다(var 키워드)
(어디서든지 참조/변경 가능한 전역변수는 의도치 않게 값이 변경될 가능성이 높고 다른 코드에 영향을 줄 가능성도 높다)
- 변수보다는 상수를 사용해 값의 변경을 억제 한다(const 키워드)
- 변수의 이름은 변수의 목적이나 의미를 파악할 수 있도록 네이밍 한다(모든 식별자(변수, 함수, 클래스 이름 등) 포함) => 협업과 생산성 향상에 도움을 준다