ES2020에서 추가된 기능

자바스크립트 세부사항 스터디

Posted by jopemachine on November 1, 2021 Updated on September 27, 2022

ES2020에서 추가된 기능

BigInt

  • 길이의 제약 없이 정수를 다룰 수 있게 해 줌.
  • 정수 리터럴 끝에 n을 붙이면 자동으로 BigInt 타입이 된다.

모듈 동적으로 가져오기

  • import를 프라미스를 반환하는 함수 형태로서 사용 가능하게 됨.
  • 즉 모듈을 원하는 시점에 동적으로 읽어올 수 있다.

null 병합 연산자

  • 왼쪽 피연산자가 nil (null이거나 undefined) 이면 오른쪽 피연산자 값을 반환한다.
  • || 와 상당히 유사하지만, ??는 왼쪽 피연산자 값이 nil일 때, || 는 왼쪽 피연산자 값이 falsy일 때 오른쪽 피연산자 값을 반환한다.
  • 예제로, 0 || 100 은 100이고, 0 ?? 100의 결과값은 0 이다.

옵셔널 체이닝

  • ?. 를 이용한 프로퍼티 접근 방법.
  • 예제로, data.article에서 data가 nil 이라면 예외가 던져지지만, data?.article은 data가 nil일 때 evaluation이 중단되기 때문에 예외를 발생시키지 않는다. (short-circuit)
  • 꼭 있어야 하는 값에 옵셔널 체이닝을 사용하지 말 것.

Promise.allSettled

  • Promise.all은 하나라도 reject 된 경우 다른 프라미스들은 무시되고 전체가 reject 된다. (비동기 함수를 호출했다면 계속 진행되지만 결과는 무시된다)
  • 반대로 Promise.allSettled는 모든 프라미스가 처리될 때 까지 기다렸다가 성공한 프라미스의 결과값들, 실패한 프라미스의 결과 값들을 배열 형태로 반환한다.

globalThis

  • 브라우저의 전역 객체는 window, Nodejs 환경에선 global로 호환되지 않는다. (Node 개발자인 Ryan dahl이 노드 개발에서 후회한다고 말하는 것 중 하나.)
  • 모든 호스트 환경에서의 전역 객체의 이름을 globalThis로 표준화했다.

matchAll

  • 문자열에서 일치하는 정규 표현식을 iterator 형식으로 반환합니다. matchAll을 사용할 땐 인자로 넘겨진 정규표현식에 /g 를 붙여 사용해야만 한다. (그렇지 않은 경우 에러 발생)

Related links

  1. BigInt: https://ko.javascript.info/bigint
  2. 모듈 동적으로 가져오기: https://ko.javascript.info/modules-dynamic-imports
  3. null 병합 연산자: https://ko.javascript.info/nullish-coalescing-operator
  4. 옵셔널 체이닝: https://ko.javascript.info/optional-chaining
  5. Promise.allSettled: https://ko.javascript.info/promise-api#ref-1210
  6. globalThis: https://ko.javascript.info/global-object