2022년에 ES7 을 포스팅하는게 맞나 싶긴 하지만.. 정리하는 차원에서 ES7 에 나온 기능들을 알아보도록 하겠습니다.
ES7 부터 TC39 산하에서 출시된 첫번째 개정판입니다.
- new exponentiation operator
const result1 = Math.pow(10, 2);
console.info(result1); // 100
const result2 = 10 ** 2;
console.info(result2); // 100
새로운 거듭제곱 연산자가 추가되었습니다. 기존에 거듭제곱을 연산하기 위해선 Math.pow 메서드의 도움을 받아야 했는데,
** 연산자로 인해 좀 더 간편해진 기분입니다.
현재는 비교적 최근에 추가된 BigInt 도 ** 연산자는 처리가 가능하며, 이 점을 제외하면 Math.pow 와 동일합니다.
const result1 = -2 ** 2;
console.info(result1); // SyntaxError: Unary operator used immediately before exponentiation expression
const result2 = (-2) ** 2;
console.info(result2); // 4
어떤 언어에서는 거듭제곱 연산자가 단항연산자보다 우선 순위를 가져서 -2 ** 2 의 결과가 -4 로 나오기도 하고, Bash 에선 거듭제곱 연산자보다 단항연산자가 우선순위를 가져 4 로 계산되기도 합니다.
자바스크립트에선 모호한 표현식을 제공하지 않아 -2 ** 2 와 같은 경우엔 SyntaxError 를 던집니다.
- Array.prototype.includes
나올 당시엔 이제 indexOf 를 거의 쓰지 않아도 될거란 생각이 들었고, 이제는 워낙에 자주 쓰는 Array.prototype.includes 메서입니다.
const test = [1, 2, 3];
const result1 = test.includes(1);
const result2 = test.includes(4);
console.info(result1); // true
console.info(result2); // false
배열이 특정 요소를 판별해 boolean 을 반환하는 메서드입니다.
이 메서드가 없을 땐 Array.prototype.indexOf 의 반환값이 -1 인지 아닌지로 판단을 했었는데 확실히 편리해졌습니다.
const test = [1, 2, 3];
const result1 = test.includes(1, 1);
const result2 = test.includes(3, 1);
const result3 = test.includes(3, 3);
const result4 = test.includes(3, -1);
const result5 = test.includes(1, -1);
console.info(result1); // false
console.info(result2); // true
console.info(result3); // false
console.info(result4); // true
console.info(result5); // false
Array.prototype.includes 메서드는 검색을 시작할 위치를 두번째 인자에 optioanl 로 넣을 수 있습니다. 기본값은 0 입니다.
검색을 시작할 위치가 배열의 길이보다 같거나 크면 false 를 반환합니다.
음수가 들어오면, 해당 값에 배열의 길이를 더한 값의 인덱스부터 검색을 시작합니다.
위의 예시처럼 -1 이 들어간 경우엔 -1 + 3 => index 2 부터 검색을 시작하고, 따라서 3 은 true 1 은 false 가 되는 것입니다.
이미 ES6 에서 많은 기능들이 추가되어서인지 ES7 에선 다양한 기능이 추가되지는 않았습니다.
'Backend > Javascript' 카테고리의 다른 글
ES8 (ES2017) (0) | 2022.03.26 |
---|---|
ES12 (ES2021) (0) | 2022.03.13 |
ES11 (ES2020) (0) | 2022.03.05 |
ES10 (ES2019) (0) | 2022.02.27 |
ES9 (ES2018) (0) | 2022.02.19 |