Learning JavaScript? Download my free JavaScript Handbook 🔥

ES2016, officially known as ECMAScript 2016, was finalized in June 2016.

Compared to ES2015, ES2016 is a tiny release for JavaScript, containing just two features:

  • Array.prototype.includes
  • Exponentiation Operator


This feature introduces a more readable syntax for checking if an array contains an element.

With ES6 and lower, to check if an array contained an element you had to use indexOf, which checks the index in the array, and returns -1 if the element is not there.

Since -1 is evaluated as a true value, you could not do for example

if (![1,2].indexOf(3)) {
  console.log('Not found')

With this feature introduced in ES2016 we can do

if (![1,2].includes(3)) {
  console.log('Not found')

Exponentiation Operator

The exponentiation operator ** is the equivalent of Math.pow(), but brought into the language instead of being a library function.

Math.pow(4, 2) == 4 ** 2

This feature is a nice addition for math intensive JS applications.

The ** operator is standardized across many languages including Python, Ruby, MATLAB, Lua, Perl and many others.


Follow my new project: From Zero to App

A video-based learning project where I create a React + GraphQL app from idea to deployment! 9 free videos already out!