Najnovija verzija JavaScript-a ima samo 2 nove značajke. Evo kako rade.

Razgovarajmo o najnovijoj verziji JavaScript-a: ECMAScript 2016 (poznatiji kao ES7). ES7 donosi dvije nove značajke: Array.prototype.includes()i novi eksponencijalni operator: **.

Array.prototype.includes ()

Otišli su dani u kojima smo koristili .indexOf()znati da li element postoji u nizu.

Ključna riječ je "postojati".

.indexOf() u redu je ako želimo znati na kojem se indeksu pojavljuje dati element.

Ali, ako nam je cilj da znate, ako neki element postoji u niz, onda .indexOf()nije najbolji izbor. A razlog je jednostavan: Kada postavljamo upit o postojanju nečega, očekujemo logičku vrijednost, a ne broj .

Array.prototype.includes()čini upravo to. Određuje postoji li zadani element u nizu, vraća se trueako postoji, u falsesuprotnom.

U specifikaciju

Array.prototype.includes ( searchElement [ , fromIndex ] )
  • searchElement - element za traženje.
  • fromIndex(nije obavezno) - indeks od kojeg se započinje pretraživanje.

Zaronjavanje u specifikaciju čini vam se traženjem snage.

Specifikacija kaže:

Idemo korak po korak i pokušajmo razumjeti specifikaciju na primjerima.

  1. Ovdje je razlika u položaju elementa 4. Budući da naš prvi primjer stavlja 4 na posljednji položaj, include će pretraživati ​​cijeli niz. Po specifikaciji se .includes()vraća odmah nakon pronalaska searchElement. To našu drugu operaciju čini mnogo bržom.
  2. Velika razlika u algoritmu SameValueZero u odnosu na usporedbu stroge jednakosti (koju koristi .indexOf()) jest u tome što omogućuje otkrivanje NaN elemenata.
  3. Vraća logičku vrijednost truekada je element pronađen i u falsesuprotnom. Nema više indeksa kao rezultat?
  4. Suprotno tome .indexOf(), .includes()ne preskače nedostajuće elemente niza. Umjesto toga, tretira ih kao nedefinirane vrijednosti.

Počinjete li osjećati snagu?

Nismo se ni dotakli fromIndex.

Provjerimo specifikaciju:

Eventualni drugi argument fromIndexdefaultno 0(tj cijeli niz pretražuje). Ako je veća ili jednaka duljini polja, vraća se false , tj. Polje se neće pretraživati. Ako je negativan, koristi se kao pomak s kraja niza za izračunavanje fromIndex. Ako je izračunati indeks manji od 0, pretražit će se cijeli niz.
  1. Ako se ne fromIndexnavede 0, uzima se zadana vrijednost i pretražuje se cijeli niz.
  2. .includes()odmah vraća false kad je vrijednost fromIndexveća od duljine polja.
  3. Kada fromIndexje negativan, tada se njegova vrijednost izračunava kao array.length — fromIndex. To je osobito korisno pri pretraživanju posljednjih elemenata. Na primjer, fromIndex = -5isto je što i pretraživati ​​zadnjih 5 elemenata.
  4. Da bi se izbjeglo .includes()lomljenje kad je fromIndexizračunata vrijednost niža od 0, pretražuje se čitav niz. Radije bih se razbio?

OK - zadnja nova značajka ...

The Exponential Operator (**)

Čekali smo dan kad ćemo se moći igrati eksponencijalnobrojevi kao što se igramo sabiranjem, oduzimanjem, množenjem, dijeljenjem.

Pa, taj dan je stigao.

Operator se **ponaša potpuno isto kao i Math.pow(). Vraća rezultat podizanja prvog operanda u moć drugog (npr x ** y.).

To je to!

Sada imate moć ES7 ! Koristite ga dobro!

Zahvaljujući ?

  • 2ality.com, Axel Rauschmayer
  • Specifikacija jezika ECMAScript® 2016
  • Svim obožavateljima He-Mana
  • freeCodeCamp za objavljivanje ❤️

Svakako pogledajte moje članke o ES6:

Istražimo ES6 generatore

Generatori, zvani i implementacija iterablea. medium.freecodecamp.org O da! Async / Await

async / await je nova JavaScript sintaksa za deklariranje asinkrone funkcije. medium.freecodecamp.org