기록
ECMA 2021에서 눈여겨볼 것들
als982001
2024. 5. 12. 15:56
1. ||=, &&=, ??=
- Logical OR assignment (||=): a ||= b 와 같이 이용할 수 있으며, 이는 a = a || b 와 같음.
- Logical AND assignment (&&=): a &&= b 와 같이 이용할 수 있으며, 이는 a = a && b와 같음.
- Nullish coalescing assignment (??=): a ??= b 와 같이 이용할 수 있으며, 이는 a = a ?? b 와 같음.
2. Numeric separators
- 엄청 긴 숫자에 '_'를 포함시켜서 보기 좋게 만들 수 있음.
- 실제 숫자 값이 변하지는 않음
- '_'를 숫자 사이에 하나씩만 이용해야 함. '__'처럼 두 개 이상 붙일 시 에러
3. Promise.any
- 여러 프로미스를 포함하는 이터러블을 받아, 그 중 하나라도 이행(fulfill)될 때까지 기다림.
- 최소한 하나의 프로미스가 성공적으로 이행되면, 그 결과를 사용해 프로미스를 이행
- 모든 프로미스가 거부(rejected)되면, AggregateError를 통해 거부되며 이 에러는 각 프로미스의 거부 이유를 포함
- Promise.any()는 하나만이라도 성공하면 될 때 유용
const promise1 = Promise.reject(0);
const promise2 = new Promise((resolve) => setTimeout(resolve, 100, 'quick'));
const promise3 = new Promise((resolve) => setTimeout(resolve, 500, 'slow'));
Promise.any([promise1, promise2, promise3]).then(value => console.log(value));
// 로그: 'quick'
4. String.prototype.replaceAll(searchValue, newValue)
- 문자열 내에서 주어진 패턴(문자열 또는 정규식)을 찾아 다른 문자열로 교체하고, 결과로 새 문자열을 반환
- searchValue가 문자열인 경우, 문자열 전체에서 일치하는 모든 인스턴스를 교체
- 정규식을 사용할 때는 전역 플래그(g)를 사용하지 않아도 모든 일치 항목을 대체할 수 있음
- 일반적인 replace() 메서드와 다른 점은, replace()는 첫 번째 일치만 대체하고 replaceAll은 모두 대체함
'2021/04/25'.replaceAll('/', '-'); // '2021-04-25'