
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 true
ako postoji, u false
suprotnom.
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.
- 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 pronalaskasearchElement
. To našu drugu operaciju čini mnogo bržom. - Velika razlika u algoritmu SameValueZero u odnosu na usporedbu stroge jednakosti (koju koristi
.indexOf()
) jest u tome što omogućuje otkrivanje NaN elemenata. - Vraća logičku vrijednost
true
kada je element pronađen i ufalse
suprotnom. Nema više indeksa kao rezultat? - 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 argumentfromIndex
defaultno
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.
- Ako se ne
fromIndex
navede0
, uzima se zadana vrijednost i pretražuje se cijeli niz. .includes()
odmah vraća false kad je vrijednostfromIndex
veća od duljine polja.- Kada
fromIndex
je negativan, tada se njegova vrijednost izračunava kaoarray.length — fromIndex
. To je osobito korisno pri pretraživanju posljednjih elemenata. Na primjer,fromIndex = -5
isto je što i pretraživati zadnjih 5 elemenata. - Da bi se izbjeglo
.includes()
lomljenje kad jefromIndex
izrač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