게시글

강좌28 - ECMAScript - 9달 전 등록 / 8일 전 수정

ES2021의 변화

2021년에도 어김없이 자바스크립트 신규 스펙이 나왔습니다. 이제는 별로 특별한 게 나오지는 않습니다. 추가된 몇 가지 기능들을 살펴 보시죠.

replaceAll

문자열을 한 번에 여러 개 바꿀 수 있는 편의 기능이 추가되었습니다.

'hello,zerocho,why'.replaceAll(',', ' ') // 'hello zerocho why'

이전에는 정규표현식을 사용해서 다음과 같이 했어야 합니다.

'hello,zerocho,why'.replace(/,/g, ' ') // 'hello zerocho why'

Promise.any

여러 개의 프로미스 중에 하나라도 성공하면 바로 resolve되고, 모든 프로미스가 다 실패하면 reject됩니다. reject 시에는 AggregationError가 발생합니다.

Promise.any([
  Promise.reject(1),
  Promise.reject(3),
  Promise.resolve(5), // 이게 가장 먼저 성공
]).then((result) => console.log(result === 5));

Promise.any([
  Promise.reject(1),
  Promise.reject(3),
  Promise.reject(5),
]).catch((result) => console.log(result)); // AggregationError 

Promise.race와 헷갈려하시는 분이 많을 것 같은데, Promise.race는 성공하든 실패하든, 가장 먼저 끝나는 것이 resolve되고, Promise.any는 먼저 성공(반드시 성공해야 함)하는 것이 resolve됩니다.

Promise.race([
  Promise.reject(1), // 이게 가장 먼저 끝남
  Promise.reject(3),
  Promise.resolve(5),
]).catch((result) => console.log(result === 1));

WeakReferences

WeakRef는 솔직히 한 번도 써본 적이 없습니다. 다만 공식 문서를 읽었을 때는 참조 관계는 유지하되 가비지컬렉션은 될 수 있는 객체에 적용하는 것으로 보입니다.

이 부분은 직접 공식 문서 를 읽어보세요.

Logical Assignment

||=, &&=, ??= 연산자가 추가되었습니다. 대충 무슨 역할인지는 아시겠죠?

a = a || 2;

코드가

a ||= 2;

로 줄어든 것입니다. 저는 애초에 위 코드를 잘 쓰지 않아서 느낌이 없지만, 쓰던 분들한테는 유용할 수 있겠네요.

?? 연산자는 nullish coalescing 연산자이니까 이게 뭔지 모르시는 분은 ES2020 글 을 읽고 오세요.

numeric separators

자바스크립트에서 큰 숫자를 표시할 때는 눈을 크게 뜨고 봐야 했습니다. 은행처럼 천 단위로 콤마를 안 붙여주기 때문인데요. 콤마는 못 붙이지만 숫자 단위를 구분할 수 있는 _ 기호가 추가되었습니다. 여러분이 구분하고 싶은 곳에다 추가하시면 됩니다. 소수점 아래에도 추가 가능합니다.

1_000_000
1_2345_2345
25.12_2364

한국 사람들은 천 또는 만 단위로 넣어두면 편하겠네요!

조회수:
0
목록
투표로 게시글에 관해 피드백을 해주시면 게시글 수정 시 반영됩니다. 오류가 있다면 어떤 부분에 오류가 있는지도 알려주세요! 잘못된 정보가 퍼져나가지 않도록 도와주세요.
Copyright 2016- . 무단 전재 및 재배포 금지. 출처 표기 시 인용 가능.

댓글

1개의 댓글이 있습니다.
8달 전
어디다 남겨야할지 몰라서 여기다 질문 드립니다 script import할때 async와 defer 옵션이있잔아요 이게 언제 추가된 거고 지원브라우저가 어떻게되는지 검색으로 알 수 가없어서 질문 드립니다