С момента выпуска ECMAScript 2015 (также известного как ES6) он представил огромный набор новых функций. Они включают в себя стрелочные функции, наборы, карты, классы и деструктурирование и многое другое. Во многих смыслах ES2015 почти похож на изучение новой версии JavaScript.

Технический комитет Ecma 39 регулирует спецификацию ECMA. Они решили выпускать новую версию ECMAScript каждый год, начиная с 2015 года. Ежегодное обновление означает, что больше не будет крупных выпусков, таких как ES6.

ECMAScript 2016 представил только две новые функции:

  • Array.prototype.includes ()
  • Оператор возведения в степень

Array.prototype.includes ()

Array.prototype.includes() проверяет массив на наличие value, переданного как argument. Он возвращает true, если массив содержит value, в противном случае возвращает false.

Раньше нам нужно было использовать Array.prototype.indexOf(), чтобы проверить, содержит ли данный массив элемент или нет.

let numbers = [1, 2, 3, 4];
if(numbers.indexOf(2) !== -1) {
  console.log('Array contains value');
}

С ECMA2016 мы можем написать:

if(numbers.includes(2)) {
  console.log('Array contains value');
}

Array.prototype.includes() обрабатывает NaN лучше, чем Array.prototype.indexOf(). Если массив содержит NaN, то indexOf() не возвращает правильный индекс при поиске NaN.

Array.prototype.includes() возвращает правильное значение при поиске NaN.

NaN является свойством глобального объекта JavaScript и представляет собой не-числовое значение. Известны странности при сравнении NaN с другим значением. Они рассматриваются в Array.prototype.includes(), но не в Array.protoype.indexOf.

let numbers = [1, 2, 3, 4, NaN];
console.log(numbers.indexOf(NaN)); //Prints -1
console.log(numbers.includes(NaN)); //Prints true

Оператор возведения в степень

JavaScript уже поддерживает множество арифметических операторов, таких как +, -, * и другие.

В ECMAScript 2016 появился оператор возведения в степень **.

Он имеет ту же цель, что и Math.pow(). Он возвращает первый аргумент в степени второго аргумента.

let base = 3;
let exponent = 4;
let result = base**exponent;
console.log(result); //81

Заключение

Новые функции, представленные на ECMA2016, представляют собой удобную альтернативу существующим функциям.

Забегая вперед, ECMA2017 завершился в июне этого года. Новые функции включают async/await, SharedArrayBuffer и некоторые полезные методы для Object.prototype.