През 2023 г. ECMAScript 2023 направи своя грандиозен вход, въвеждайки набор от нови функции, които накараха разработчиците да бръмчат от вълнение.

ECMAScript, скриптовият език, който захранва мрежата, е стандартизираният скриптов език, известен като JavaScript. Той последователно се развива, за да отговори на непрекъснато нарастващите изисквания на уеб разработката. Всяка нова версия носи със себе си набор от нови функции и подобрения, които дават възможност на разработчиците да пишат по-чист и по-ефективен код.

През 2023 г. ECMAScript 2023 направи своя грандиозен вход, въвеждайки набор от нови функции, които накараха разработчиците да бръмчат от вълнение.

Характеристика:

Нека се потопим в света на ECMAScript 2023 и да проучим неговите новаторски иновации.

Намиране на масив от последния

Намирането на елемент в масив е много често срещан модел на програмиране. .findLast() и .findLastIndex() са полезни методи за масив, които ви позволяват да намерите последния елемент в масив, който отговаря на дадено условие.

Методът .findLast() връща стойността на последния елемент в масива, който съответства на предоставената функция за тестване. Ето един пример:

const numbers = [1, 2, 3, 4, 5];

const lastEvenNumber = numbers.findLast((number) => number % 2 === 0);
console.log(lastEvenNumber); // Output: 4

От друга страна, методът .findLastIndex() връща индекса на последния елемент в масива, който удовлетворява предоставената функция за тестване. Ето един пример:

const numbers = [1, 2, 3, 4, 5];

const lastIndex = numbers.findLastIndex((number) => number % 2 === 0);
console.log(lastIndex); // Output: 3

Тези методи са особено полезни, когато трябва да намерите последното срещане на конкретен елемент или условие в рамките на масив.

Hashbang граматика

Hashbang Grammar е функция, която позволява JavaScript файловете да се изпълняват като скриптове в среди, които я поддържат, като Unix-подобни операционни системи. Той позволява използването на специален синтаксис, наречен „hashbang“ или „shebang“ в началото на файла, последван от пътя до интерпретатора, който трябва да изпълни скрипта. Ето примерен кодов фрагмент:

#!/usr/bin/env node

// in the Script Goal
'use strict';
console.log(1);

// in the Module Goal
export {};
console.log(1);

В този пример hashbang #!/usr/bin/env node указва, че скриптът трябва да се изпълни с помощта на интерпретатора Node.js. Когато файлът се стартира, посоченият интерпретатор (в този случай Node.js) ще изпълни кода на JavaScript след хешбанг линията.

Символи като ключове на WeakMap

Символите са уникални и неизменни стойности, които могат да се използват като ключове за свойства, предоставяйки начин за създаване на неизброими свойства. WeakMap е вградена структура от данни на JavaScript, която позволява обектите да се използват като ключове. За разлика от обикновените карти, WeakMaps съдържат слаби препратки към ключовете, което означава, че ако няма други препратки към ключовите обекти, те могат да бъдат събрани за боклук. Това е полезно за сценарии, при които искате да свържете данни с обект, без да предотвратявате събирането на обекта.

Ето примерен кодов фрагмент, който демонстрира използването на символи като ключове на WeakMap:

const wm = new WeakMap();

const key = Symbol('myKey');
const value = 'Some value';

wm.set(key, value);

console.log(wm.get(key)); // Output: Some value

В този пример създаваме екземпляр на WeakMap, наречен wm. Ние дефинираме символ key и го свързваме със стойността 'Some value' с помощта на метода set(). По-късно извличаме стойността с помощта на метода get() и я записваме в конзолата.

Промяна на масив чрез копиране

Това предложение въвежда следните функционални свойства на Array.prototype:

  • Array.prototype.toReversed() -> Array
  • Array.prototype.toSorted(compareFn) -> Array
  • Array.prototype.toSpliced(start, deleteCount, ...items) -> Array
  • Array.prototype.with(index, value) -> Array

Всички тези методи запазват целевия масив недокоснат и връщат негово копие с извършената промяна вместо това.

toReversed, toSorted и with също ще бъдат добавени към TypedArrays:

  • TypedArray.prototype.toReversed() -> TypedArray
  • TypedArray.prototype.toSorted(compareFn) -> TypedArray
  • TypedArray.prototype.with(index, value) -> TypedArray
const sequence = [1, 2, 3];
sequence.toReversed(); // => [3, 2, 1]
sequence; // => [1, 2, 3]

const outOfOrder = new Uint8Array([3, 1, 2]);
outOfOrder.toSorted(); // => Uint8Array [1, 2, 3]
outOfOrder; // => Uint8Array [3, 1, 2]

const correctionNeeded = [1, 1, 3];
correctionNeeded.with(1, 2); // => [1, 2, 3]
correctionNeeded; // => [1, 1, 3]

Какво да очакваме през 2024 г.?

Въпреки че фокусът сега е върху характеристиките за 2023 г., има и важни предложения за 2024 г. Въпреки че те все още са в начален етап на одобрение, те обещават вълнуващ напредък за JavaScript.

Добре оформени Unicode низове

Предложението е в ECMA-262 да се дефинира метод за проверка дали даден ECMAScript низ е добре оформен или не. В допълнение към подобрената производителност, този метод също така ще увеличи яснотата за читателите на кода, където се извършва този тест - особено тези без обширни познания за Unicode или регулярни изрази.

if (!someString.isWellFormed()) { someString = someString.toWellFormed(); }

Atomics.waitAsync

Atomics.waitAsync, който агент може да използва, за да изчака място в споделена памет (за да бъде по-късно събуден от някой агент, извикващ Atomics.notify на това местоположение), без да чака синхронно (т.е. без блокиране). По-специално, този API е полезен в агенти, чийто атрибут [[CanBlock]] е false, като главната нишка на документ на уеб браузър, но API не е ограничен до такива агенти.

API е базиран на обещания. Много висока производителност не е изискване, но добрата производителност е желателна.

RegExp v флаг със зададена нотация + свойства на низове

В символните класове на регулярни изрази на ECMAScript това предлага добавяне на синтаксис и семантика за следния набор от операции:

  • разлика/изваждане (в A, но не и в B)
  • пресечна точка (както в A, така и в B)
  • вложени символни класове ( необходими за активиране на горното)
// difference/subtraction
[A--B]

// intersection
[A&&B]

// nested character class
[A--[0-9]]

В заключение, ECMAScript 2023 въвежда нова ера за разработка на JavaScript. Неговите нови характеристики и подобрения дават възможност на разработчиците да пишат по-чист, по-изразителен код и да подобряват цялостната производителност на своите приложения. Докато мрежата продължава да се развива, ECMAScript 2023 гарантира, че JavaScript остава многофункционален и мощен език, който ще оформи бъдещето на уеб разработката.

ресурси:

https://github.com/tc39/proposals/blob/main/finished-proposals.md

Ако сте харесали статията и искате да се свържете с мен, сега можете да планирате директна среща с мен: https://topmate.io/anishaswain

Първоначално публикувано на адрес https://theuigirl.hashnode.dev.