본문으로 건너뛰기

"ES2021" 태그로 연결된 5개 게시물개의 게시물이 있습니다.

모든 태그 보기

String.prototype.replaceAll

· 약 3분
Mathias Bynens ([@mathias](https://twitter.com/mathias))

JavaScript에서 문자열을 다뤄본 적이 있다면, String#replace 메서드에 대해 들어본 적이 있을 가능성이 큽니다. String.prototype.replace(searchValue, replacement)는 지정한 매개변수에 따라 일부 일치 항목이 교체된 문자열을 반환합니다:

약한 참조와 파이널라이저

· 약 8분
사티야 구나세카란 ([@_gsathya](https://twitter.com/_gsathya)), 마티아스 바이넨스 ([@mathias](https://twitter.com/mathias)), 슈유 꿔 ([@_shu](https://twitter.com/_shu)), 레셰크 스비르스키 ([@leszekswirski](https://twitter.com/leszekswirski))

일반적으로 자바스크립트에서 객체에 대한 참조는 _강하게 유지_됩니다. 즉, 객체를 참조하고 있는 동안에는 가비지 컬렉션이 이루어지지 않습니다.

const ref = { x: 42, y: 51 };
// `ref`(혹은 같은 객체에 대한 다른 참조)를 갖고 있는 한,
// 객체는 가비지 컬렉션되지 않습니다.

현재로서는 WeakMapWeakSet만이 자바스크립트에서 약하게 객체를 참조하는 유일한 방법입니다. WeakMap이나 WeakSet에 객체를 추가해도 가비지 컬렉션을 막을 수는 없습니다.

const wm = new WeakMap();
{
const ref = {};
const metaData = 'foo';
wm.set(ref, metaData);
wm.get(ref);
// → metaData
}
// 이제 이 블록 스코프 내에서 `ref`에 대한 참조를 갖고 있지 않기 때문에,
// `wm`의 키임에도 불구하고 가비지 컬렉션이 가능합니다.

Promise 조합자들

· 약 4분
Mathias Bynens ([@mathias](https://twitter.com/mathias))

ES2015에서 Promise가 도입된 이후, 자바스크립트는 정확히 두 가지 Promise 조합자: Promise.allPromise.race를 지원했습니다.

현재 두 가지 새로운 제안인 Promise.allSettledPromise.any가 표준화 과정을 진행 중입니다. 이 추가들로 인해 자바스크립트에는 총 네 가지 Promise 조합자가 존재하게 되며, 각각 다른 사용 사례를 가능하게 합니다.

숫자 구분자

· 약 2분
Mathias Bynens ([@mathias](https://twitter.com/mathias))

큰 숫자 리터럴은 특히 반복되는 숫자가 많을 때, 인간의 눈으로 빠르게 해석하기 어렵습니다:

1000000000000
1019436871.42

가독성을 개선하기 위해 새로운 JavaScript 언어 기능은 숫자 리터럴에서 언더스코어를 구분 기호로 사용할 수 있게 합니다. 따라서 위의 코드는 이제 숫자를 천 단위로 그룹화하여 다시 작성할 수 있습니다: