ES10, ES2020 간단하게 알고가기

 

ES2019(ES10)의 변화

Object.fromEntries

  • Object.entries의 반대 기능

    • Object.entries는 객체를 2차원 배열로 만들어준다.

  • 2차원 배열을 객체로 만들어준다.

  • 배열말고 Map같은 것도 지원

 

Array.prototype.flat 

Array.prototype.flatMap

  • 다중 배열을 펼치는 기능

  • 기본 1단계 펼침

  • 숫자 인수를 넣어 몇 번 연달아 펼칠치 결정 가능

 

String.prototype.trimStart

String.prototype.trimEnd

String.prototype.trimLeft

String.prototype.trimRight

  • 공백 제거 가능

  • 하위호환을 위해 같은 역할을 하는 메서드를 두개 만들었다고 한다

 

Optional Catch

  • catch 매개변수를 쓰지 않는 경우 error 생략해도 된다.

 

기타

  • 유니코드

  • JSON, toString 개선

  • Symbol에 description 속성이 생겼다. - 어떤 심볼을 사용했는지 알아낼 수 있게 되었다.

 

 

ES2020의 변화

matchAll

  • .exec와 비슷

  • 문자열에서 일치하는 정규표현식을 iterator 형식으로 반환

  • 캡쳐링 그룹도 결과로 반환

  • /g를 사용해야 에러가 발생하지 않음

 

BigInt

  • 큰 숫자의 표현, 처리 가능

  • 숫자로 변환할 수는 없다.

  • 같은 BigInt 끼리 계산해야 에러가 발생하지 않음

  • 소수점은 표현하지 못함

  • 숫자와의 타입체크 시 다르게 인식해서 (===) 불가, 일반 숫자 비교는 가능

 

Promise.allSettled

  • Promise.all은 하나만 실패해도 catch로 이동했다.

  • 하지만 allSettled는 여러 프로미스에서 개별적으로 성공 여부를 알려준다.

    • 실패 시 개별 처리 가능

 

globalThis

  • 런타임에 따라서 window, global로 나뉘었는데 하나로 통일하여 사용가능

    • 브라우저에서 globalThis는 window

    • 노드에서는 globalThis는 global

    • 기존의 window, global은 존재한다.

 

Optional Chaining 

  • ?. 로 사용한다.

  • 해당 값이 존재하지 않으면 undefined가 된다.

  • 해당 값이 존재하면 조건문을 실행할 수 있다.

if (a) { 
  if (a.b) { 
      console.log(a.b.c); 
  } 
}
  • ?. 연산자 사용
console.log(a.b?.());

 

 

Nullish Coalescing 

  • ??로 사용한다.

  • null 값을 처리하는 방식으로 || 로 표시되는 or 연산자와는 다르다.

  • null과 undefined인 경우 거짓으로 처리 가능 

    • 기존에는 0, NaN, '', false 등도 거짓으로 처리했었다.

 

 

Dynamic import

  • 함수로 사용하면 import는 프로미스를 리턴한다.

  • 콜백, async / await에서도 사용가능


 

ES2019(ES10)의 변화

https://www.zerocho.com/category/ECMAScript/post/5c909bfe5a8005001ffb3f14

 

ES2020의 변화

https://www.zerocho.com/category/ECMAScript/post/5eae7480e70c21001f3e7956

ES2020 7가지 새로운 팁

https://frontdev.tistory.com/entry/ES2020-7%EA%B0%80%EC%A7%80-%EC%83%88%EB%A1%9C%EC%9A%B4-%ED%8C%81

 

 

 

+ Recent posts