JavaScript
JavaScript

Co přibude v novém ECMAScript 2023

Patrik KeblušekPatrik Keblušek,

ECMAScript (ECMA - European Computer Manufacturers Association) je skriptovací jazyk, který je v souladu s JavaScriptem a některými dalšími programovacími jazyky. Je to skriptovací jazyk, který tvoří základy pro JavaScript a Node.js. ECMA vyvíjí standardy pro obor informačních technologií a jazyky jako je například JavaScript, nebo Dart-lang a C#. Tyhle nové standardy pro ECMAScript se vydávají pravidelně každý rok.

S příchodem nové verze nečekajme žádnou revoluci, jak tomu bylo u JavaScriptu ES6 (ECMAScript 2015).

Array find from last

Přibude nám nová metoda na pole findLast() a findLastIndex(). Tyhle metody budou dělat to samé co find() a findIndex() ale z druhého konce pole. To se v některých situacích určitě hodí, vyhneme se různým pomocným a často zbytečně složitým funkcím.

const isEven = (number) => number % 2 === 0;
const numbers = [1, 2, 3, 4];

console.log(numbers.findLast(isEven)); // vypíše nám 4
console.log(numbers.findLastIndex(isEven)); // vypíše nám 3

Hashbang Grammar

Hashband Grammar známy jako shebang je sekvence znaku na začátku spustitelného skriptu v JavaScriptu. Většina komentářu od vývojářu je dokumentace jako kód funguje a proč je kód napsaný jak je. Hashband komentáře začínaji znakmi #! a specifikují cestu pre JavaScript interpreter, který chceme použit pro spuštění scriptu. CLI JavaScriptu (například Node.js) veme hashbang a pošle validní kód do JavaScript enginu. To přibližuje JavaScript standardu ostatních programovacích jazyků.

#!/usr/bin/env node
console.log('hi 👋');

Symboly jako WeakMap keys

Aktuálně můžeme použit iba objekty jako klíče vo WeakMap. Klíče vo WeakMap chceme, aby byly unikátní a symboly byly definované jako neměnný způsob, který nelze znovu vytvořit. To nám dáva možnost použít symboly jako klíče vo WeakMap.

const weak = new WeakMap();
const key = Symbol("ref");

weak.set(key, "ECMAScript 2023");

console.log(weak.get(key)); // vypíše nám ECMAScript 2023

Change Array by Copy

Metody jako reverse(), sort() a splice() upraví původní pole. To víme i z našeho článku na fordevs o array metodach. Nové metody .toReversed(), .toSorted() a .toSpliced() jsou ekvivalentem zmíněných ale neupraví původní hodnoty ale vráti nám pole nové. Dále nám přibude metoda with(), která vráti nové pole a změní hodnotu na danom indexe. Přijmá jako argument index a value.

const original = [1, 2, 3, 4];
const reversed = original.toReversed();

console.log(original);
// [ 1, 2, 3, 4 ]

console.log(reversed);
// [ 4, 3, 2, 1 ]
const original = [1, 3, 2, 4];
const sorted = original.toSorted();

console.log(original);
// [ 1, 3, 2, 4 ]

console.log(sorted);
// [ 1, 2, 3, 4 ]
const original = [1, 4];
const spliced = original.toSpliced(1, 0, 2, 3);

console.log(original);
// [ 1, 4 ]

console.log(spliced);
// [ 1, 2, 3, 4 ]
const original = [1, 2, 2, 4];
const withThree = original.with(2, 3);

console.log(original);
// [ 1, 2, 2, 4 ]

console.log(withThree);
// [ 1, 2, 3, 4 ]

Zdroje

https://thenewstack.io/the-new-javascript-features-coming-in-ecmascript-2023/ 
https://pawelgrzybek.com/whats-new-in-ecmascript-2023/