Den nyeste version af JavaScript har kun 2 nye funktioner. Sådan fungerer de.

Lad os tale om den nyeste version af JavaScript: ECMAScript 2016 (mere almindeligt kendt som ES7). ES7 bringer to nye funktioner: Array.prototype.includes()og den nye eksponentiel operatør: **.

Array.prototype.includes ()

Borte er de dage, hvor vi plejede .indexOf()at vide, om et element eksisterede i en matrix.

Nøgleordet er "eksisterer".

.indexOf() er fint, hvis vi vil vide ved hvilket indeks et givet element vises.

Men hvis vores mål er at vide, om et givet element findes i en matrix, .indexOf()er det ikke den bedste mulighed. Og årsagen er enkel: Når vi spørger om eksistensen af ​​noget, forventer vi en boolsk værdi, ikke et tal .

Array.prototype.includes()gør netop det. Det bestemmer, om der findes et givet element i en matrix, og returnerer, truehvis det gør det, falseellers.

Ind i specifikationen

Array.prototype.includes ( searchElement [ , fromIndex ] )
  • searchElement - det element, der skal søges efter.
  • fromIndex(valgfrit) - det indeks, hvorfra man begynder at søge.

At dykke ned i specifikationen føles som at søge efter magt.

Specifikationen siger:

Lad os gå trin for trin og prøve at forstå specifikationen med eksempler.

  1. Forskellen her er placeringen af ​​elementet 4. Fordi vores første eksempel placerer 4 i den sidste position, inkluderer søger i hele arrayet. Efter specifikation .includes()vender tilbage straks efter at have fundet searchElement. Dette gør vores anden operation meget hurtigere.
  2. Den store forskel med SameValueZero-algoritmen versus Strict Equality Comparison (brugt af .indexOf()) er, at den tillader detektering af NaN- elementerne.
  3. Det returnerer den boolske, truenår elementet findes og falseellers. Ingen flere indekser som resultat?
  4. Som modsat til .indexOf(), .includes()springer ikke manglende matrixelementer over. I stedet behandler det dem som udefinerede værdier.

Begynder du at mærke kraften?

Vi har ikke engang rørt fromIndex.

Lad os kontrollere specifikationen:

Det valgfri andet argument er som fromIndexstandard 0(dvs. hele arrayet søges). Hvis det er større end eller lig med længden af ​​arrayet, returneres false , dvs. at arrayet ikke søges. Hvis det er negativt, bruges det som offset fra slutningen af ​​arrayet til beregning fromIndex. Hvis det beregnede indeks er mindre end 0, vil hele arrayet blive søgt.
  1. Hvis der ikke fromIndexer angivet nej, 0tages standardværdien af , og hele arrayet søges.
  2. .includes()returnerer straks falsk, når værdien af fromIndexer større end arrayets længde.
  3. Hvornår fromIndexer negativ, så beregnes dens værdi som array.length — fromIndex. Dette er især nyttigt, når du søger på de sidste elementer. For eksempel fromIndex = -5er det samme som at søge på de sidste 5 elementer.
  4. For at undgå at .includes()bryde, når den fromIndexberegnede værdi er lavere end 0, søges i hele arrayet. Jeg vil hellere bryde?

OK - en sidste nye funktion ...

The Exponential Operator (**)

Vi har ventet på den dag, vi kan lege med eksponentieltal som vi spiller med addition, subtraktion, multiplikation, division.

Nå, den dag er her.

Operatøren **opfører sig nøjagtigt på samme måde som Math.pow(). Det returnerer resultatet af at hæve den første operand til magten i den anden (f.eks. x ** y).

Det er det!

Du har nu styrken i ES7 ! Brug det godt!

Tak til ?

  • 2ality.com af Axel Rauschmayer
  • ECMAScript® 2016 sprogspecifikation
  • Til alle He-Man fans
  • freeCodeCamp til udgivelse ❤️

Sørg for at tjekke mine artikler om ES6:

Lad os udforske ES6-generatorer

Generatorer, aka, en implementering af iterables. medium.freecodecamp.org Åh ja! Async / afventer

async / wait er den nye JavaScript-syntaks til at erklære en asynkron funktion. medium.freecodecamp.org