문자열 내에서 특정 문자열 또는 정규식 패턴과 일치하는 모든 항목을 새 문자열로 교체하는 메서드. 교체된 새 문자열을 반환
g
가 있는 정규식 객체가 들어올 수 있음하나만 바꾸고 싶을 땐 replace, 모두 바꾸고 싶을 땐 replaceAll 사용
const text = "apple apple";
// replace (첫 번째만 치환)
console.log(text.replace("apple", "orange"));
// "orange apple"
// replaceAll (전체 치환)
console.log(text.replaceAll("apple", "orange"));
// "orange orange"
여러 개의 프로미스 중에서 가장 먼저 성공한(fullfilled) 프로미스를 반환하는 메서드. 모든 프로미스가 실패(rejected) 했을 때만 AggregateError
와 함께 rejected됨
// 가장 먼저 성공한 결과 반환
const p1 = new Promise((_, reject) => setTimeout(() => reject("fail1"), 100));
const p2 = new Promise((resolve) => setTimeout(() => resolve("success"), 200));
const p3 = new Promise((resolve) => setTimeout(() => resolve("another success"), 300));
Promise.any([p1, p2, p3])
.then(result => console.log(result)) // "success"
.catch(error => console.log(error));
// 모든 Promise가 rejected일 때 => AggregateError 발생
const p1 = Promise.reject("fail1");
const p2 = Promise.reject("fail2");
Promise.any([p1, p2])
.then(result => console.log(result))
.catch(error => {
console.log(error instanceof AggregateError); // true
console.log(error.errors); // ["fail1", "fail2"]
});
왼쪽 피연산자가 nullish(null or undefined)일 때, 오른쪽 피연산자 값을 할당
let a = null;
a ??= 10;
console.log(a); // 10
let b = 0;
b ??= 20;
console.log(b); // 0
let c;
c ??= "default";
console.log(c); // "default"
왼쪽 피연산자가 truthy일때 오른쪽 피연산자 값을 할당
let a = 5;
a &&= 20;
console.log(a); // 20
let b = 0;
b &&= 30;
console.log(b); // 0
왼쪽 피연산자가 falsy일때 오른쪽 피연산자 값을 할당
let a = 0;
a ||= 10;
console.log(a); // 10
let b = "hi";
b ||= "hello";
console.log(b); // "hi"
WeakRef
로 감싼 객체를 변수에 저장하면 약한 참조로 관리되며, 객체에 대한 다른 강한 참조가 모두 사라지면 GC에 의해 메모리에서 제거됨주의점
- GC 타이밍은 예측 불가, 메모리에서 바로 제거 되는 것이 아님
- 캐싱, 메모리 관리 등의 상황에서만 사용 권장 (일반적인 데이터 저장 용도로는 적합하지 않음)
숫자의 가독성을 높이기 위해 _
를 사용하여 숫자를 구분
const number = 1_000_000;
ES 모듈의 최상위 수준에서 await
키워드를 사용할 수 있게 됨. async 래퍼 함수가 필요하지 않아 오류 처리가 개선됨
#
로 시작하는 이름을 지정하여 클래스 멤버(프로퍼티, 메서드)를 비공개로 설정. 클래스 자체에서만 접근할 수 있으며 삭제 및 동적 할당 불가능
TS 프로젝트에선 이 방법을 권장하지 않음. 기존 private 키워드 사용하자
클래스 멤버를 정적으로 표시 (static 키워드)
클래스가 초기화될 때 실행되는 블록, 정적 멤버의 생성자
import ... from ... assert { type: 'json' }
와 같이 가져온 모듈의 타입을 단언하는 방법
정규식 일치 및 캡처 그룹에 대한 시작 및 끝 인덱스를 가져옴. RegExp.exec()
, String.match()
및 String.matchAll()
에서 동작
배열, 문자열 인덱싱 시 at()을 이용하여 끝부터 인덱싱 가능 arr[arr.length - 1]
과 동일 (할당은 불가능)
obj.hasOwnProperty(property)
와 같이 객체가 특정 프로퍼티를 가지고 있는지 판별할 때 사용하는 메서드
객체 자체가 hasOwnProperty를 덮어쓴 경우, hasOwn 메서드를 통해 안전하게 판별할 수 있음
error에 선택적인 원인을 지정할 수 있음.
자동으로 프로퍼티를 비공개로 설정하고 해당 프로퍼티에 대한 get/set 접근자를 생성