
Поговоримо про останню версію JavaScript: ECMAScript 2016 (більш відому як ES7). ES7 приносить дві нові функції: Array.prototype.includes()
і новий експонентний оператор: **
.
Array.prototype.includes ()
Пройшли ті дні , коли ми використовували , .indexOf()
щоб знати , якщо елемент існує в масиві.
Ключове слово - "існувати".
.indexOf()
чудово, якщо ми хочемо знати, при якому індексі з’являється даний елемент.
Але якщо наша мета полягає в тому, щоб знати , якщо даний елемент існує в масиві, то .indexOf()
це не найкращий варіант. І причина проста: запитуючи існування чогось, ми очікуємо логічне значення, а не число .
Array.prototype.includes()
робить саме це. Він визначає, чи існує даний елемент у масиві, повертається, true
якщо він існує, false
інакше.
До специфікації
Array.prototype.includes ( searchElement [ , fromIndex ] )
searchElement
- елемент для пошуку.fromIndex
(необов’язково) - індекс, з якого починається пошук.
Занурення у специфікацію відчуває себе схожим на пошук сили.

У специфікації сказано:
Давайте підемо покроково і спробуємо зрозуміти специфікацію на прикладах.
- Різниця тут полягає в позиції елемента 4. Оскільки наш перший приклад ставить 4 в останню позицію, include буде шукати весь масив. За специфікацією
.includes()
повертається відразу після пошукуsearchElement
. Це робить нашу другу операцію набагато швидшою. - Велика відмінність алгоритму SameValueZero від порівняння строгої рівності (використовується
.indexOf()
) полягає в тому, що він дозволяє виявляти елементи NaN . - Він повертає логічне значення,
true
коли елемент знайдено,false
інакше. Більше немає покажчиків як результат? - На відміну від
.indexOf()
,.includes()
не пропускає відсутні елементи масиву. Натомість воно розглядає їх як невизначені цінності.
Ви починаєте відчувати силу?
Ми навіть не чіпали fromIndex
.
Давайте перевіримо специфікацію:
ЗаfromIndex
замовчуванням необов’язковий другий аргумент 0
(тобто здійснюється пошук у цілому масиві). Якщо вона більша або дорівнює довжині масиву, повертається значення false , тобто масив не буде здійснено пошук. Якщо воно від’ємне, для обчислення використовується як зміщення від кінця масиву fromIndex
. Якщо обчислюваний індекс менше 0
, буде здійснено пошук у цілому масиві.- Якщо
fromIndex
значення не0
вказано, приймається значення за замовчуванням і здійснюється пошук у цілому масиві. .includes()
негайно повертає значення false, коли значенняfromIndex
перевищує довжину масиву.- Коли
fromIndex
від’ємне, тоді його значення обчислюється якarray.length — fromIndex
. Це особливо корисно при пошуку останніх елементів. Наприклад,fromIndex = -5
це те саме, що пошук за останніми 5 елементами. - Щоб уникнути
.includes()
поломки, колиfromIndex
обчислене значення нижче 0, здійснюється пошук у цілому масиві. Я волію зламати?
Добре - остання нова функція ...
The Exponential Operator (**)
Ми чекали дня, коли зможемо грати експоненційночисла, як ми граємо додаванням, відніманням, множенням, діленням.
Ну, той день вже тут.
Оператор **
поводиться точно так само, як Math.pow()
. Він повертає результат підняття першого операнда до рівня другого (наприклад x ** y
).
Це воно!
Тепер ви маєте потужність ES7 ! Використовуйте це добре!

Завдяки ?
- 2ality.com Акселя Раушмайєра
- Специфікація мови ECMAScript® 2016
- Усім шанувальникам He-Man
- freeCodeCamp для публікації ❤️
Обов’язково перегляньте мої статті про ES6:
Давайте дослідимо генератори ES6
Генератори, інакше, реалізація ітерацій. medium.freecodecamp.org О так! Async / Await
async / await - це новий синтаксис JavaScript для оголошення асинхронної функції. medium.freecodecamp.org