Най-новата версия на 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 в последната позиция, включва ще търси целия масив. По спецификация се .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