1. replaceAll
기존 replace는 발견한 첫 요소만 변경되었지만, replaceAll을 통해 지정된 모든 요소를 변경할 수 있다.
이전에는 regex의 g(전역)을 통해 전체 요소를 변경했지만
여기서 특수문자를 사용하는 경우 \을 사용해야해서 가독성이 떨어지는 문제가 있었다.
// old
'test'.replace('t', 'a') // aest
'test'.replace(/t/g, 'a') // aesa
// new
'test'.replaceAll('t', 'a') // aesa
2. Promise.any()
Promise 배열 중 가장 먼저 성공한 객체를 리턴한다.
만약, 모두 reject된다면 catch문이 실행되며 AggregateError를 리턴한다.
const rejectPromise = new Promise((res, rej) => {
setTimeout(() => {
rej("failed");
}, 1000);
});
const successPromise = new Promise((res, rej) => {
setTimeout(() => {
res("success");
}, 1000);
});
Promise.any([rejectPromise, successPromise])
.then(() => console.log("success"))
.catch(e => console.log(e));
// success
3. 논리연산자
let x = 5
const y = 10
x &&= y //
x ||= y // x 값이 false(0)이면 y
x ??= y // x 값이 null or undefined 이면 y
4. 숫자 separator
보통 , 대신 _을 적는 것으로
큰 숫자를 작성할 때 가독성을 위해 사용한다.
y = 10_00_00_000;
console.log(y); // 100000000
5. WeakRef()
객체에 대한 weak reference를 생성할 수 있다.
weak reference는 가비지 컬렉터 대상으로 특정 객체를 일정 시간 캐싱하는 방법으로 사용할 수 있다.
아래 코드를 돌려보면 abc가 출력되었다가 deleted가 출력됨을 확인할 수 있다.
let person = {
name: "abc",
address: "seoul"
}
const copyPerson = new WeakRef(person);
person = null;
const timer = setInterval(() => {
const cPerson = copyPerson.deref();
if(cPerson) console.log(cPerson.name);
else console.log("deleted");
}, 1000);
반응형
'💻 개발IT > 기타' 카테고리의 다른 글
네이버 지도 API에서 지도 겹침 문제 (0) | 2022.09.22 |
---|---|
[HTML] Shadow DOM 이란? (feat. 크롤링 실패) (1) | 2022.09.17 |
[HTML/CSS] cell sticky table 생성 (0) | 2022.09.14 |
[nvm] Error: Permission denied @ apply2files - /usr/local/lib/node_modules/expo-cli/node_modules/.bin/detect-libc (0) | 2022.09.13 |
OpenAPI Generator 사용법 (0) | 2022.09.08 |
[CSS] content 속성 (0) | 2022.09.07 |
Javascript ES2022 정리 (0) | 2022.08.20 |
CSS Units - em, rem, vw, vh, px, % (0) | 2022.08.18 |