What's new in ECMAScript 2016 (ES7)
In June 2015 the TC39 (Technical Committee 39) officially released a spec of ECMAScript 2015 (colloquially known as a ES6). In parallel to the new spec, a new naming system within the language was introduced which is related with the new yearly release process. The plan is to release a new version of the language every year, and ship it with features that are ready at the time. ES2015 added a lot of amazing features. If you are not familiar with these fresh add-ons yet, check “ES6 Overview in 350 Bullet Points” by Nicolás Bevacqua. It's the best summary that I have seen so far. Luckily we shouldn't expect updates as huge every year which give us a chance to follow the spec.
The final list of features that we're going to see in ECMAScript 2016 is ready and as expected, it is just a small update. Let's have a look!
This feature proposed by Domenic Denicola and Rick Waldron checks if the array includes an element and returns a boolean value. The syntax is super simple.
['a', 'b', 'c'].includes('a'); // true ['a', 'b', 'c'].includes('d'); // false
Previously we did it like this which is not as self explanatory.
['a', 'b', 'c'].indexOf('a') >= 0 ? true : false; // true ['a', 'b', 'c'].indexOf('d') >= 0 ? true : false; // false
This new feature also solves the problem of checking for
NaN in an array. Compare these two examples and results.
['a', 'b', 'c', NaN].includes(NaN); // true ['a', 'b', 'c', NaN].indexOf(NaN) >= 0 ? true : false; // false
Proposed by Rick Waldron, Claude Pache and Brendan Eich, this feature brings a much nicer notation to exponentiation. It uses infix notation which is much cleaner than function notation (
Math.pow()). We can find the same notation in other programming languages like: Python, Ruby or Pearl. Have look at the examples.
2 ** 4; // 16
let a = 2; a **= 4; // 16
Math.pow(2, 4); // 16