Найновіша версія JavaScript має лише 2 нові функції. Ось як вони працюють.

Поговоримо про останню версію 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(необов’язково) - індекс, з якого починається пошук.

Занурення у специфікацію відчуває себе схожим на пошук сили.

У специфікації сказано:

Давайте підемо покроково і спробуємо зрозуміти специфікацію на прикладах.

  1. Різниця тут полягає в позиції елемента 4. Оскільки наш перший приклад ставить 4 в останню позицію, include буде шукати весь масив. За специфікацією .includes()повертається відразу після пошуку searchElement. Це робить нашу другу операцію набагато швидшою.
  2. Велика відмінність алгоритму SameValueZero від порівняння строгої рівності (використовується .indexOf()) полягає в тому, що він дозволяє виявляти елементи NaN .
  3. Він повертає логічне значення, trueколи елемент знайдено, falseінакше. Більше немає покажчиків як результат?
  4. На відміну від .indexOf(), .includes()не пропускає відсутні елементи масиву. Натомість воно розглядає їх як невизначені цінності.

Ви починаєте відчувати силу?

Ми навіть не чіпали fromIndex.

Давайте перевіримо специфікацію:

За fromIndexзамовчуванням необов’язковий другий аргумент 0(тобто здійснюється пошук у цілому масиві). Якщо вона більша або дорівнює довжині масиву, повертається значення false , тобто масив не буде здійснено пошук. Якщо воно від’ємне, для обчислення використовується як зміщення від кінця масиву fromIndex. Якщо обчислюваний індекс менше 0, буде здійснено пошук у цілому масиві.
  1. Якщо fromIndexзначення не 0вказано, приймається значення за замовчуванням і здійснюється пошук у цілому масиві.
  2. .includes()негайно повертає значення false, коли значення fromIndexперевищує довжину масиву.
  3. Коли fromIndexвід’ємне, тоді його значення обчислюється як array.length — fromIndex. Це особливо корисно при пошуку останніх елементів. Наприклад, fromIndex = -5це те саме, що пошук за останніми 5 елементами.
  4. Щоб уникнути .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