ECMAScript 2019

JavaScript 버전 번호

오래된 JS 버전은 숫자로 명명됩니다: ES5 (2009)과 ES6 (2015)

2016년부터 버전은 연도로 명명됩니다: ECMAScript 2016, 2017, 2018, 2019, ...

ES2019의 새로운 기능:

경고

이 기능들은 상대적으로 새로운 기능입니다.

오래된 브라우저는 대체 코드(Polyfill)가 필요할 수 있습니다

JavaScript 문자열 메서드 trimStart()

ES2019가 JavaScript에 String 메서드를 추가했습니다 trimStart()

trimStart() 메서드의 작동 방식은 trim() 유사하지만, 문자열 시작 부분의 공백만 제거합니다.

예제

let text1 = "     Hello World!     ";
let text2 = text1.trimStart();

직접 테스트해 보세요

2020년 1월부터 모든 현대 브라우저가 JavaScript String trimStart()를 지원합니다:

크롬 에지 파이어폭스 사파리 오페라
크롬 66 에지 79 파이어폭스 61 사파리 12 오페라 50
2018년 4월 2020년 1월 2018년 6월 2018년 9월 2018년 5월

JavaScript 문자열 메서드 trimEnd()

ES2019는 JavaScript에 추가했습니다: trimEnd() 문자열 메서드와 같습니다.

trimEnd() 메서드의 작동 방식은 trim() 유사하지만, 문자열 끝의 공백만 제거합니다.

예제

let text1 = "     Hello World!     ";
let text2 = text1.trimEnd();

직접 테스트해 보세요

2020년 1월부터 모든現代브라우저는 JavaScript String trimEnd()를 지원합니다:

크롬 에지 파이어폭스 사파리 오페라
크롬 66 에지 79 파이어폭스 61 사파리 12 오페라 50
2018년 4월 2020년 1월 2018년 6월 2018년 9월 2018년 5월

JavaScript 객체 메서드 fromEntries()

ES2019는 JavaScript에 추가했습니다: fromEntries() 객체 메서드.

fromEntries() 메서드는 탐색 가능한 키/값 쌍으로부터 객체를 생성합니다.

예제

const fruits = [
["apples", 300],
["pears", 900],
["bananas", 500]
];
const myObj = Object.fromEntries(fruits);

직접 테스트해 보세요

2020년 1월부터 모든現代브라우저는 JavaScript Object fromEntries()를 지원합니다:

크롬 에지 파이어폭스 사파리 오페라
크롬 73 에지 79 파이어폭스 63 사파리 12.1 오페라 60
2019년 3월 2020년 1월 2018년 10월 2019년 3월 2019년 4월

선택적 catch 바인딩

ES2019부터 필요하지 않으면 catch 매개변수를 생략할 수 있습니다:

예제

2019년 전:

try {
// 코드
catch (err) {
// 코드
}

2019년 후:

try {
// 코드
catch {
// 코드
}

2020년 1월부터 모든現代브라우저는 선택적 catch 바인딩을 지원합니다:

크롬 에지 파이어폭스 사파리 오페라
크롬 66 에지 79 파이어폭스 58 사파리 11.1 오페라 53
2018년 4월 2020년 1월 2018년 1월 2018년 3월 2018년 5월

JavaScript 배열 메서드 flat()

ES2019는 JavaScript에 추가했습니다: flat() 배열 메서드.

flat() 메서드는 중첩 배열을 평평하게 만들어 새 배열을 생성합니다.

예제

const myArr = [[1,2],[3,4],[5,6]];
const newArr = myArr.flat();

직접 테스트해 보세요

2020년 1월부터 모든現代브라우저는 JavaScript Array flat()를 지원합니다:

크롬 에지 파이어폭스 사파리 오페라
크롬 69 에지 79 파이어폭스 62 사파리 12 오페라 56
2018년 9월 2020년 1월 2018년 9월 2018년 9월 2018년 9월

JavaScript 배열 메서드 flatMap()

ES2019는 JavaScript에 추가했습니다: flatMap() 배열 메서드.

flatMap() 메서드는 먼저 배열의 모든 요소를 매핑한 후, 새 배열을 생성하기 위해 배열을 평평하게 만듭니다.

예제

const myArr = [1, 2, 3, 4, 5, 6];
const newArr = myArr.flatMap((x) => x * 2);

직접 테스트해 보세요

안정적인 배열 메서드 sort()

ES2019 개정Array sort() 메서드.

2019년 이전에는, 규범은 QuickSort와 같은 불안정적인 정렬 알고리즘을 허용했습니다.

ES2019 이후, 브라우저는 안정적인 정렬 알고리즘을 사용해야 합니다:

한 값에 따라 요소를 정렬할 때, 이 요소들은 같은 값을 가진 다른 요소들과의 상대 위치를 유지해야 합니다.

예제

const myArr = [
  {name:"X00",price:100 },
  {name:"X01",price:100 },
  {name:"X02",price:100 },
  {name:"X03",price:100 },
  {name:"X04",price:110 },
  {name:"X05",price:110 },
  {name:"X06",price:110 },
  {name:"X07",price:110 }
];

직접 테스트해 보세요

위의 예제에서, 가격에 따라 정렬할 때, 결과는 다른 상대 위치의 이름이 나타나지 않도록 합니다.

X01 100
X03 100
X00 100
X03 100
X05 110
X04 110
X06 110
X07 110

재정의된 JSON.stringify()

ES2019 개정JSON의 stringify() 메서드.

2019년 이전에는 JSON이 \ 인코딩된 문자를 문자열화할 수 없었습니다.

예제

let text = JSON.stringify("\u26D4");

직접 테스트해 보세요

ES2019 이전에는, UTF-8 코드 포인트(U+D800부터 U+DFFF까지)에서 JSON.stringify()를 사용하면 손상된 Unicode 문자를 반환합니다. 예를 들어, ���입니다.

이번 개정 이후, UTF-8 코드 포인트를 가진 문자열은 JSON.stringify()를 통해 안전하게 변환되고, JSON.parse()를 통해 원래 문자열로 복원될 수 있습니다.

구분 기호

문자열 텍스트에서 지금은 행 분리 기호와 구분 기호를 사용할 수 있습니다(\u2028\u2029)

2019년 이전에는 이들은 행 종료 기호로 간주되어 오류 예외를 유발했습니다:

예제

// 이는 ES2019에서 유효합니다:
let text = "\u2028";

직접 테스트해 보세요

주의

지금, JavaScript와 JSON은 같은 규칙을 가집니다.

ES2019 이전에:

text = JSON.parse('"\u2028"') 은 ''로 해석됩니다.

text = '"\u2028"' 은 제공합니다.문법 오류

재정의된 Function toString()

ES2019 개정Function toString() 메서드에 대해 설명합니다.

toString() 메서드는 함수 소스 코드를 나타내는 문자열을 반환합니다.

2019년부터, toString()는 함수의 소스 코드를 포함한 주석, 공백 및 문법 세부 사항을 반환해야 합니다.

2019년 이전에는, 다른 브라우저는 다른 함수 변형을 반환했습니다. 예를 들어, 주석과 공백이 없었습니다. 2019년부터는, 함수는 작성된 방식으로 완전히 반환되어야 합니다.

예제

function myFunction(p1, p2) {
  return p1 * p2;
}

직접 테스트해 보세요