○ 템플릿 문자열
ES2015 문법에 새로 생긴 문자열 표현에 대해서도 살펴보겠습니다. 요약하면, 이 새로운 문자열은 (큰 or 작은) 따옴표가 아닌 백틱(` , Tab 상단 키)을 사용한다는 점입니다. 이 새로운 문자열 사용 방식이 왜 필요한지에 대해서도 살펴보겠습니다.
우선, 우리가 아래 변수들을 이용해서 결과적으로 1 더하기 2는 '3' 이라는 텍스트를 출력한다고 가정해 보겠습니다.
var num1 = 1;
var num2 = 2;
var result = 3;
var string1 = num1 + ' 더하기 ' + num2 + ' 는 \'' + result +'\'';
console.log(string1);
// 1 더하기 2 는 '3'
잘 알고 있는 방식이지만, 생각보다 string1 변수를 선언하기가 복잡합니다. 특히 작은따옴표(' ') 사용을 위해서 작성하게 되는 이스케이프(escape) 문자열 때문에 더욱 지저분한 코드가 되었습니다.
이제 백틱을 사용해서 동일한 내용을 출력해 보겠습니다.
const num3 = 1;
const num4 = 2;
const result2 = 3;
const string2 = `${num3} 더하기 ${num4}는 '${result2}'`;
console.log(string2);
// 1 더하기 2는 '3'
훨씬 코드가 단순해졌습니다. 일단, 변수 사이의 [+]가 없어진 것만으로도 꽤 심플해졌고 ${ }를 사용해 간단하게 변수를 적용할 수 있습니다. 특히, 스트링 전체를 백틱으로 감싸기 때문에 따옴표 사용도 간단해졌습니다.
○ 객체 리터럴
아래 코드와 같이, oldObject라는 객체에 동적으로 프로퍼티를 추가해 보겠습니다.
var sayNode = function(){
console.log('Node');
};
var es = 'ES';
var oldObject = {
sayJS: function(){
console.log('JS');
},
sayNode: sayNode,
};
oldObject[es+6] = 'Fantastic';
oldObject.sayNode();
oldObject.sayJS();
console.log(oldObject.ES6);
/* 출력
Node
JS
Fantastic
*/
위 코드는 신규 기능들을 적용해 아래와 같이 쓸 수 있습니다.
const sayNode = function(){
console.log('Node');
};
const es = 'ES';
const newObject = {
sayJS(){
console.log('JS');
},
sayNode,
[es+6]: 'Fantastic',
};
newObject.sayNode();
newObject.sayJS();
console.log(newObject.ES6);
/* 출력
Node
JS
Fantastic
*/
바뀐 부분을 짚어봅시다. sayJS는 모두 특정 개체의 메서드(객체 프로퍼티로서 선언된 함수)입니다. 이때 콜론(:)과 function을 사용하지 않아도 됩니다.
또한, sayNode의 경우 프로퍼티 명과 변수명이 동일합니다. 이럴 때는 중복해서 사용하지 않아도 됩니다. 예를 들어 {name: name, age: age}와 같은 프로퍼티 값들이 있다면 이는 ES2015에서는 {name, age}로 써도 무관한 것입니다.
마지막으로 객체의 프로퍼티 명은 동적으로도 생성이 가능합니다. oldObject[es+6]는 객체 리터럴의 블록 외부에서 선언하였습니다. 하지만 ES2015부터는 객체 리터럴 내부에서 동적 속성을 선언해도 됩니다.
'Programming > Node.js' 카테고리의 다른 글
2. Javascript ES2015 (4) - 구조 분해 할당 (1) | 2024.01.30 |
---|---|
2. Javascript ES2015 (3) - Arrow Function(화살표 함수) (0) | 2024.01.27 |
2. Javascript ES2015 (1) - const, let (0) | 2024.01.24 |
1. Node.js 핵심 개념 이해 (5) - 서버로서의 노드 (2) | 2024.01.23 |
1. Node.js 핵심 개념 이해 (4) - Single Thread (0) | 2024.01.20 |