1. 데이터 타입
2. 자바스크립트 데이터 타입 분류
let symbol1 = Symbol();
let symbol2 = Symbol();
console.log(symbol1 == symbol2); // false
let symbol3 = Symbol('사랑');
console.log(symbol3.toString()); // Symbol(사랑)
심벌을 사용하면 특정 값의 상태를 표현하는 데 제한을 둘 수 있다.
// 오셀로 게임 -> 칸의 상태를 값으로 표현할 때
let none = 0; // 칸에 돌이 놓여 있지 않은 상태
let black = -1; // 칸에 흑돌이 놓여 있는 상태
let white = 1; // 칸에 백돌이 놓여 있는 상태
// 칸의 상태를 cell 변수에 저장할 때 위의 코드의 경우 아래와 같이 두 코드로 작성했을 경우
// 프로그램이 모두 동작할 수 있다.
// 그러나 프로그램 읽는데 혼동이 올 수 있다.
let cell;
cell == white;
cell == 1;
// 심벌을 사용하면 변수명만을 이용해서 상태를 구분할 수 있다.
let none = Symbol('none');
let black = Symbol('black');
let white = Symbol('white');
[심벌과 문자열 연결]
Symbol.for()를 활용하면 문자열과 연결된 심벌을 생성할 수 있다.
이렇게 심벌을 생성할 경우 전역 레지스트리에 심벌이 생성된다. 따라서 프로그램 전체에서 같은 심벌을 공유할 수 있다.
또한 Symbol.keyFor()을 사용해 심벌과 연결된 문자열을 구할 수 있다.
let sym1 = Symbol.for('love');
let sym2 = Symbol.for('love');
console.log(sym1 == sym2); // true
let sym3 = Symbol('love');
console.log(Symbol.keyFor(sym1)); // love
console.log(Symbol.keyFor(sym3)); // undefined
3. 템플릿 리터럴 : ECMAScript 6부터 추가된 문자열 표현 구문
// 템플릿 리터럴
// 기본적인 사용법 : 역따옴표(`)로 묶은 문자열
let t1 = `I'm a IronMan`;
let t2 = `I'm a
IronMan`;
let t3 = String.raw`I'm a \n IronMan`;
console.log('t1:', t1); //t1: I'm a IronMan
console.log('t2:', t2); //t2: I'm a (\n) IronMan =>줄바꿈 이스케이프 시퀀스 쓴 것 처럼 출력
console.log('t3:', t3); //t3: I'm a \n IronMan => 이스케이프 시퀀스 문자를 그대로 출력할 때
보간 표현식의 경우 그동안 변수나, 표현식의 결과값을 문자열로 연결할 때 '+'를 사용해야 했는데 이러한 부분에서 보다 쉽게 표현할 수 있어서 유용하다.
// 보간 표현식
// 템플릿 리터럴 안에 플레이스 홀더를 사용.
// 플레이스 홀더 ${...} => ... 부분을 표현식으로 간주해 평가한다
// 즉 변수나, 표현식의 결괏값 삽입 가능
let a = 2, b= 3;
console.log(`${a} + ${b} = ${a+b}`); // 2 + 3 = 5
let today = new Date();
console.log(`오늘은 ${today.getFullYear()}년 ${today.getMonth()+1}월 ${today.getDate()}일 입니다.`);
// 오늘은 2020년 8월 17일 입니다.
[JavaScript] 자바스크립트의 this (0) | 2020.08.18 |
---|---|
[JavaScript] 자바스크립트 배열의 기초 (0) | 2020.08.18 |
[JavaScript] 자바스크립트 객체의 기초 (0) | 2020.08.17 |
[JavaScript] 자바스크립트 함수 기초 (0) | 2020.08.14 |
[JavaScript] 자바스크립트 함수의 정의 (0) | 2020.08.13 |