ECMAScript 2019

스펙 문서

개요

ECMAScript 2019는 2019년에 나온 ECMAScript (자바스크립트)표준의 10번째 개정판이다. ES10이라고도 부른다.

추가 사항

Array.prototype.flat()

배열 내의 배열들을 펼쳐 만든 새 배열을 반환하는 메서드가 추가되었다. 인자는 펼칠 깊이를 나타낸다. 인자 없이 호출하면 한 번만 펼치고, 인자에 정수를 주면 그 횟수만큼 펼친다. Infinity를 이용하면 모든 내부 배열을 깊이에 관계 없이 펼쳐준다.

let arr = [[1, 2], [3], [4, [5, [6]], 7]]
console.log(arr.flat()) // [1, 2, 3, 4, [5, [6]], 7]
console.log(arr.flat(2)) // [1, 2, 3, 4, 5, [6], 7]
console.log(arr.flat(Infinity)) // [1, 2, 3, 4, 5, 6, 7]

Array.prototype.flatMap()

.map() 이후에 .flat()을 실행하는 것과 똑같은 기능을 수행하는 메서드가 추가되었다. 인자로 주어진 함수를 대상 배열의 요소들에 각각 적용하여 새 배열을 만들고, 그 배열의 내부 배열들을 한 단계 펼친다. map과 flat을 순서대로 호출하는 것보다 효율적이다.

let arr = ["철수 영희", "산 바다"]
console.log(arr.map(x => x.split(" "))) // [["철수", "영희"], ["산", "바다"]]
console.log(arr.flatMap(x => x.split(" "))) // ["철수", "영희", "산", "바다"]

String.prototype.trimStart(), trimEnd()

String.prototype.trim()은 문자열 앞뒤의 공백(줄바꿈 문자 포함) 등을 제거하여 반환하는 역할을 한다. ES10에선 앞이나 뒤의 공백을 선택적으로 제거할 수 있는 메서드를 추가했다. .trimStart().trimLeft()는 문자열 앞의 공백을, .trimEnd().trimRight()는 문자열 뒤의 공백을 제거한다. 같은 기능을 하는 메서드가 두 개씩 추가된 것은 호환성을 위해서라고 하며, 원칙적으로는 .trimStart().trimEnd()가 기본이며, 나머지는 별칭이다[1].

let str = "   aaa   "
console.log(str.trim()) // "aaa"
console.log(str.trimStart()) // "aaa   "
console.log(str.trimEnd()) // "   aaa"

// trimStart, trimEnd가 기본
console.log(String.prototype.trimLeft.name) // "trimStart"
console.log(String.prototype.trimRight.name) // "trimEnd"

각주