[js] 2018 ES9 자바스크립트의 새로운 기능 소개

wonsama(71)
Published in
#kr
Words
87
Reading
1 min
Listen
Play
8y

1_xx6p4fNNuiKZe3bHO8M-kQ.png

한마디

1. 정규식의 많은 변화

1.1 /s 플레그 추가

  • 기존 .(dot) 은 하나의 문자를 검색을 의미하지만, 줄바꿈 문자의 경우 false 를 반환하는 문제가 있었음.
  • 그래서 새로 추가된 /s 플레그를 통해 해당 값을 확인할 수 있음
// [예시 1]

/hello.bye/.test('hello\nbye') // prints false
// [예시 2]

/hello.bye/s.test('hello\nbye')  // prints true

1.2 RegExp 를 통한 그룹 캡춰

  • groups 이하 지정한 이름(year, month, day)을 통해 접근 가능
// [예시 1] 예전 방식

const REGEX = /([0-9]{4})-([0-9]{2})-([0-9]{2});
const results = REGEX.exec('2018-07-12');
console.log(results[1]); // prints 2018
console.log(results[2]); // prints 07
console.log(results[3]); // prints 12
// [예시 2] 새로운 방식

const REGEX = /(?<year>[0-9]{4})-(?<month>[0-9]{2})-(?<day>[0-9]{2});
const results = REGEX.exec('2018-07-12');
console.log(results.groups.year);  // prints 2018
console.log(results.groups.month); // prints 07
console.log(results.groups.day);   // prints 12

1.3 Assertions

  • 긍정(positive ?<=...) : 매칭하는 경우
'$foo #foo @foo'.replace(/(?<=#)foo/g, 'XXX')
// prints $foo #XXX @foo
  • 부정(negative ?<!...) : 매칭되지 않는 경우
'$foo #foo @foo'.replace(/(?<!#)foo/g, 'XXX')
// prints $XXX #foo @XXX

1.4 유니코드 탐색

  • 유니코드 지정한 유니코드로 \p{} 탐색이 가능해 짐.
/\p{Script=Greek}/u.test('μ') // prints true

2. 나머지(rest)/펼치기(spread) 속성

  • ... 이전에 매칭된 값과 아닌값을 자동으로 채워 넣어준다.
const values = {a: 1, b: 2, c: 3, d: 4};
const {a, ...n} = values;
console.log(a);   // prints 1
console.log(n);   // prints {b: 2, c: 3, d: 4}

3. Promise에 finally 추가됨

  • Promise.prototype.finally
  • 성공 여부에 관계없이 반드시 수행되는 항목
fetch('http://website.com/files')
.then(data => data.json())
.catch(err => console.error(err))
.finally(() => console.log('processed!'))

4. 비동기 반복

  • 이제 반복문에도 await 이 사용가능해짐 !!
for await (const line of readLines(filePath)) {
  console.log(line);
}
[js] 2018 ES9 자바스크립트의 새로운 기능 소개 | Ecency