본문 바로가기

Backend/Javascript

ES7 (ES2016)

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