Introducing the new features that ECMAScript 2016 (ES7) adds to JavaScript


By Sanket Meghani
Since ECMAScript 2015 (also known as ES6) was released, it has introduced a huge set of new features. They include arrow functions, sets, maps, classes and destructuring, and much more. In many ways, ES2015 is almost like learning a new version of JavaScript.
Ecma Technical Committee 39 governs the ECMA specification. They decided to release a new version of ECMAScript every year starting in 2015. A yearly update means no more big releases like ES6.
ECMAScript 2016 introduced only two new features:
Array.prototype.includes()
Exponentiation operator
Array.prototype.includes()
Array.prototype.includes()
checks the array for the value
passed as an argument
. It returns true
if the array contains the value
, otherwise, it returns false
.
Before, we needed to use Array.prototype.indexOf()
to check if the given array contains an element or not.
let numbers = [1, 2, 3, 4];
if(numbers.indexOf(2) !== -1) {
console.log('Array contains value');
}
With ECMA2016, we can write:
if (numbers.includes(2)) {
console.log('Array contains value');
}
Array.prototype.includes()
handles NaN
better than Array.prototype.indexOf()
. If the array contains NaN
, then indexOf()
does not return a correct index while searching for NaN
.
Array.prototype.includes()
returns the correct value when searching for NaN
.
NaN
is a property of the JavaScript global object and represents a value that is Not-a-Number. There are known quirks when comparing NaN
to another value. These are addressed in Array.prototype.includes()
, but not in Array.protoype.indexOf
.
let numbers = [1, 2, 3, 4, NaN];
console.log(numbers.indexOf(NaN)); //Prints -1
console.log(numbers.includes(NaN)); //Prints true
Exponentiation Operator
JavaScript already supports many arithmetic operators like +, -, *
and more.
ECMAScript 2016 introduced the exponentiation operator, **
.
It has the same purpose as Math.pow()
. It returns the first argument raised to the power of the second argument.
let base = 3;
let exponent = 4;
let result = base**exponent;
console.log(result); //81
Conclusion
New features introduced by ECMA2016 provide convenient alternatives to existing functionalities.
Looking ahead, ECMA2017 was finalized in June of this year. New features include async/await
, SharedArrayBuffer
and some useful methods to Object.prototype
.
Subscribe to my newsletter
Read articles from freeCodeCamp directly inside your inbox. Subscribe to the newsletter, and don't miss out.
Written by

freeCodeCamp
freeCodeCamp
Learn to code. Build projects. Earn certifications—All for free.