ES6알아보기 08 - Template Literals

ES6알아보기 08 - Template Literals

2018, Jun 21    

ES6에서는 문자열에 변수를 추가하거나 문자열끼리 연결하는 것이 더욱 심플해졌습니다.

ES6 이전

var word = 'world';
console.log('hello ' + word + '!');

ES6

var word = 'world';
console.log(`hello ${world}!`);

위에서 예와 같이 template literals 를 이용하기 위해서는 ' comma가 아닌 ` backtick 을 이용해서 문자열을 감싸줍니다. 변수를 문자열 안에 넣기 위해서는 ${expression} 처럼 Placeholder 를 사용해 넣게 됩니다.

expression 안에서는 javascript 연산도 가능하게 됩니다.

var num1 = 3;
var num2 = 2;
console.log(`sum: ${num1 + num2}`); // sum: 5


특히 여러줄의 문자열을 연결할 경우 매우 유용하게 사용할 수 있습니다.

var year = 2018;
var month = 6;
var day = 21;

console.log(`오늘은
${year}${month}${day} 일 입니다.
`); 
// 출력값
/*
오늘은
2018 년
6 월
21 일 입니다.
*/

기존의 문자열 연결과 ES6의 template Literal 사이의 퍼포먼스 차이

+ 를 기용한 문자열 연결과 ES6 의 Template Literal 중 메모리 할당과 관련해서 어떤쪽이 더 효율적일까요? 넷상에서도 어떤쪽이 효율적인지 나름 논쟁이 있는 것 같습니다. 퍼포먼스 관력해서 javascript 코어까지 살펴볼 수는 없었지만 아래의 테스트 케이스를 참고해보면 좋을 것 같습니다.
https://jsperf.com/es6-string-literals-vs-string-concatenation

각 브라우저, 버전, compliler 엔진별로 차이가 있겠지만 대체적으로 template Literal쪽이 더 높은 퍼포먼스 를 보여주는 것 같습니다. 가독성 뿐만 아니라 퍼포먼스도 높으니 사용하지 않을 이유가 없겠네요.