Javascript, ES6부터 추가된 데이터 타입

ECMAScript 6부터 추가된 데이터 타입 : 심벌(Symbol), 템플릿 리터럴(Templete literals)

심벌은 ES6부터 추가된 몇 가지 새로운 기능(이터레이터, instanceof 재정의, 메서드의 다양한 확장 방법 등)을 이해하기 위해 필요한 기초 지식이며,

템플릿 리터럴을 사용하면 복잡한 문자열 처리를 간결하게 표현할 수 있다.

[1] 심벌

심벌은 ES6부터 추가된 새로운 원시 값. 자기 자신을 제외한 그 어떤 값과도 다른 유일무이한 값

🔹 심벌 생성 : Symbol()

Symbol()은 호출될 때마다 새로운 값을 만든다.

var sym1 = Symbol();
var sym2 = Symbol();
console.log(sym1 == sym2);    // → false

Symbol()에 인수를 전달하면 생성된 심벌의 설명을 덧붙일 수 있다.

심벌의 설명은 toString() 메서드를 사용해서 확인 가능

var HEART = Symbol("하트");
console.log(HEART.toString(); // → Symbole(하트)

이런 심벌을 사용해서 오셀로 게임을 만들 때 활용할 수 있다. 심벌은 유일무이한 값이기 때문이다.

var NONE = Symbol("none");
var BLACK = Symbol("black");
var WHITE = Symbol("white");

🔹심벌과 문자열 연결하기 : Symbol.for()

문자열과 연결된 심벌을 생성.

전역 레지스트리에 심벌이 만들어진다. 또한 전역 레지스트리에서 그 심벌을 위에 지정한 문자열로 불러올 수 있다.

var sym1 = Symbol.for("club");
var sym2 = Symbol.for("club");
console.log(sym1 == sym2); // → true

이 기능을 사용하면 코드의 어느 부분에서도 같은 심벌을 공유할 수 있다. 심벌과 연결된 문자열은 Symbol.keyFor()로 구할 수 있다.

var sym1 = Symbol.for("club");
var sym2 = Symbol("club");
console.log(Symbol.keyFor(sym1);    // → club
console.log(Symbol.keyFor(sym2);    // → undefined

[2] 템플릿 리터럴

ECMAScript 6부터 추가된 문자열 표현 구문
템플릿이란 일부만 변경해서 반복하거나 재사용할 수 있는 틀을 말함
템플릿 리터럴을 사용하면 표현식의 값을 문자열에 추가하거나 여러 줄의 문자열을 표현할 수 있다.

🔹 기본적인 사용법

역따옴표(`)로 묶은 문자열

— 역따옴표로 블로그 게시 시에 에러가 발생하여 ° 표시로 대신함 —

°I'm going to learn Javascript.°

템플릿 리터럴에서는 일반적인 줄 바꿈 문자를 사용할 수 있다. 물론, 이스케이프 시퀀스(\n)을 사용할 수도 있다.

var t = °Man errs as long as 
he strives.°;

이것을 문자열 리터럴로 표현한다면 다음과 같다. 물론, 앞서 나온 것과 같이 템플릿 리터럴에서도 이스케이프 시퀀스를 사용해서 나타낼 수도 있다.

var t = "Man errs as long as \nhe strives.";
var t = °Man errs as long as\nhe strives.°;

그런데 이스케이프 시퀀스를 그대로 나타내고 싶다면?

템플릿 리터럴에서는 String.raw를 붙이면 되고, 문자열 리터럴에서는 \\n 과 같이 표현한다.

var t = String.raw°Man errs as long as\nhe strives.°;
var t = "Man errs as long as \\nhe strives.";

🔹보간 표현식

템플릿 리터럴 안에는 플레이스 홀더를 넣을 수 있다.

플레이스 홀더 표기법 : ${…}

플레이스 홀더란 사용자 입력값처럼 실행 히점에 외부에서 주어지는 값을 표현식에 반영하고자 할 때, 그것이 들어갈 수 있도록 마련한 장소.

자바스크립트 엔진은 플레이스 홀더 안에 든 … 부분을 표현식으로 간주하여 평가
이를 활용하며 문자열 안에 변수나 표현식의 결과값을 삽입할 수 있다.

var a = 2, b = 3;
console.log(°${a} + ${b} = ${a+b}°); // → 2 + 3 = 5
var now = new Date();
console.log(°오늘은 ${now.getMonth()+1} 월 ${now.getDate()} 일입니다.°); // → 오늘은 8월 1일입니다.

모든 코드에서 ${ } 안에 든 표현식이 평가되어 문자열로 바뀌었다.

< 참고문헌 >
🔹주 참고문헌 : 모던 자바스크립트 입문 – 이소 히로시 지음, 서재원 옮김
🔹MDN Web Docs

댓글 달기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다


error: 컨텐츠가 보호되고 있습니다.
위로 스크롤