С момента выпуска 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
.