Od wprowadzenia ES2015, ECMA corocznie dokonuje aktualizacji specyfikacji na podstawie której dokonywane są zmiany w JavaScript. Dlatego w tym wpisie przedstawię Wam zmiany wprowadzone w ES7 (oficjalna nazwa ES2016). Jeśli jeszcze nie widzieliście wpisów omawiających zmiany w ES6, zachęcam Was do zapoznania się z nimi:
- Co wprowadziło ES6 do JavaScript cz. 1
- Co wprowadziło ES6 do JavaScript cz. 2
- Co wprowadziło ES6 do JavaScript cz. 3
Array.prototype.includes
Przed wprowadzeniem standardu ES7 programiści chcąc sprawdzić czy dana wartość występuje w tablicy wykorzystywali metodę indexOf, która zwraca index znalezionego elementu w tabeli lub -1, gdy nie znaleziono szukanej wartości. Poniżej przedstawiam kod z wykorzystaniem metody indexOf.
const fruits = ['banana', 'apple', 'orange'] if (fruits.indexOf('banana')) { console.log('banana') }
Metoda ta powodowała problem, ponieważ w przypadku, kiedy zwracany był index 0 warunek przyjmował wartość false. Dlatego trzeba było stosować pewne obejście, które pozwalało na poprawne działanie kodu. Przykład z zastosowaniem obejścia.
const fruits = ['banana', 'apple', 'orange'] if (fruits.indexOf('banana')) { console.log('banana') } if (fruits.indexOf('banana') !== -1) { console.log('banana') }
Metoda include unika omówionego problemu, ponieważ zwraca wartość boolean. W przypadku znalezienia wartości zwracana jest wartość true, zaś kiedy nie ma elementu wartość false. W argumentach wywołania umożliwia przekazywanie szukanej wartości oraz miejsca rozpoczęcia poszukiwania. Dodatkowo pozwala także na pracę z wartością NaN. Poniżej przykład z użycie metody include.
const fruits = ['banana', 'apple', 'orange', NaN] if (fruits.includes('banana')) { console.log('banana') } if (fruits.includes(NaN)) { console.log('NaN') }
Operator potęgowania (Exponentiation Operator)
W ES6 aby osiągnąć potęgowanie należało utworzyć pętlę, funkcję rekurencyjną lub wykorzystać Math.pow().
console.log(Math.pow(7,12)) console.log(Math.pow(2,10))
Wraz ze standardem ES7 wprowadzony został operator potęgowania. Głównie wykorzystywany jest przez programistów zajmujących się matematyką, grafiką 3D, wirtualną rzeczywistością lub wizualizacji danych. Można także korzystać z przypisywania operacji. Rozwiązanie to jest zaczerpnięte z innych języków, np. Python. Poniżej przedstawiam przykładowy kod z wykorzystaniem nowego operatora.
console.log(7 ** 12) console.log(2 ** 10) const a = 7 ** 12 const b = 2 ** 10 let c = 7 c **= 12 let d = 2 d **= 7 console.log(c) console.log(d)
Podsumowanie
Jak mogliśmy zobaczyć w ES7 zostały wprowadzone dwa ciekawe rozwiązania. Wprowadzenie metody include bardzo ułatwiło prace z tablicami i nie ma już potrzeby stosowania różnego rodzaju obejść. Z operatora potęgowania jak na razie korzystałem tylko w jednym projekcie, który realizowałem na potrzeby zaliczenia przedmiotu studenckiego. W nadchodzących wpisach będziecie mogli poznać kolejne odsłony specyfikacji ECMA.
Mariuszu, popraw proszę listing dot. includes 😉
Proszę o więcej tego typy materiałów to będę podrzucał moim podopiecznym. Pozdrawiam!
Dziękuję za komentarz i uwagę dotyczącą listingów. Wcześniej nie zauważyłem tam błędów. W najbliższych tygodnia będą pojawiały się kolejne materiały związane z nowszymi wersjami JS 🙂
Coś mało tych informacji. Postaraj się bardziej, bo wygląda jak spam. Jeszcze ten popup. Ta strona to są jakieś jaja. Nie pozdrawiam.