Die neueste Version von JavaScript verfügt nur über 2 neue Funktionen. So funktionieren sie.

Lassen Sie uns über die neueste Version von JavaScript sprechen: ECMAScript 2016 (besser bekannt als ES7). ES7 bringt zwei neue Funktionen: Array.prototype.includes()und den neuen Exponentialoperator : **.

Array.prototype.includes ()

Vorbei sind die Zeiten , wo wir früher .indexOf()wissen , ob ein Element existiert in einem Array.

Das Schlüsselwort ist "existieren".

.indexOf() ist in Ordnung, wenn wir wissen wollen, an welchem ​​Index ein bestimmtes Element erscheint.

Aber wenn unser Ziel , ob ein bestimmtes Element zu wissen , ist , existiert in einem Array, dann .indexOf()ist nicht die beste Option. Und der Grund ist einfach: Wenn wir die Existenz von etwas abfragen, erwarten wir einen booleschen Wert, keine Zahl .

Array.prototype.includes()macht genau das. Es bestimmt, ob ein bestimmtes Element in einem Array vorhanden ist, trueund gibt falseandernfalls zurück, wenn dies der Fall ist .

In die Spezifikation

Array.prototype.includes ( searchElement [ , fromIndex ] )
  • searchElement - das zu suchende Element.
  • fromIndex(optional) - Der Index, von dem aus die Suche gestartet werden soll.

Das Eintauchen in die Spezifikation fühlt sich an, als würde man nach Macht suchen.

Die Spezifikation sagt:

Gehen wir Schritt für Schritt und versuchen, die Spezifikation anhand von Beispielen zu verstehen.

  1. Der Unterschied besteht hier in der Position des Elements 4. Da unser erstes Beispiel 4 an der letzten Position platziert, durchsucht Includes das gesamte Array. Nach Spezifikation .includes()kehrt sofort nach dem Auffinden der searchElement. Dies macht unsere zweite Operation viel schneller.
  2. Der große Unterschied zwischen dem SameValueZero-Algorithmus und dem (von .indexOf()) verwendeten Strict Equality Comparison besteht darin, dass er die Erkennung der NaN- Elemente ermöglicht.
  3. Es gibt den Booleschen Wert zurück, truewenn das Element gefunden wird und falseansonsten. Keine Indizes mehr als Ergebnis?
  4. Als gegenüber .indexOf(), .includes()überspringt nicht fehlen Arrayelemente. Stattdessen werden sie als undefinierte Werte behandelt.

Fängst du an, die Kraft zu spüren?

Wir haben nicht einmal berührt fromIndex.

Lassen Sie uns die Spezifikation überprüfen:

Das optionale zweite Argument ist fromIndexstandardmäßig 0(dh das gesamte Array wird durchsucht). Wenn es größer oder gleich der Länge des Arrays ist, wird false zurückgegeben, dh das Array wird nicht durchsucht. Wenn es negativ ist, wird es als Versatz vom Ende des zu berechnenden Arrays verwendet fromIndex. Wenn der berechnete Index kleiner als ist 0, wird das gesamte Array durchsucht.
  1. Wenn nein angegeben fromIndexwird, wird der Standardwert von verwendet 0und das gesamte Array durchsucht.
  2. .includes()Gibt sofort false zurück, wenn der Wert von fromIndexgrößer als die Länge des Arrays ist.
  3. Wenn fromIndexnegativ ist, wird der Wert als berechnet array.length — fromIndex. Dies ist besonders nützlich, wenn Sie nach den letzten Elementen suchen. Dies entspricht beispielsweise fromIndex = -5der Suche nach den letzten 5 Elementen.
  4. Um ein .includes()Brechen zu vermeiden , wenn der fromIndexberechnete Wert kleiner als 0 ist, wird das gesamte Array durchsucht. Ich würde lieber brechen?

OK - eine letzte neue Funktion…

The Exponential Operator (**)

Wir haben auf den Tag gewartet, an dem wir mit Exponential spielen könnenZahlen wie wir spielen mit Addition, Subtraktion, Multiplikation, Division.

Nun, dieser Tag ist da.

Der Bediener **verhält sich genauso wie Math.pow(). Es gibt das Ergebnis des Erhöhens des ersten Operanden auf die Potenz des zweiten zurück (z x ** y. B. ).

Das ist es!

Sie haben jetzt die Leistung von ES7 ! Benutze es gut!

Dank an ?

  • 2ality.com von Axel Rauschmayer
  • ECMAScript® 2016 Sprachspezifikation
  • An alle He-Man-Fans
  • freeCodeCamp zum Veröffentlichen ❤️

Lesen Sie unbedingt meine Artikel zu ES6:

Lassen Sie uns ES6-Generatoren untersuchen

Generatoren, auch bekannt als Implementierung von Iterables. medium.freecodecamp.org Oh ja! Async / Warten

async / await ist die neue JavaScript-Syntax zum Deklarieren einer asynchronen Funktion. medium.freecodecamp.org