Узнайте о последних и интересных дополнениях ES 2023.
Цель этой статьи — познакомить вас с будущими функциями ECMAScript 2023 (ES 14), попутно предоставляя примеры. Мы обсудим эти новые предложения, которые, как ожидается, будут включены в ECMAScript 2023.
ECMAScript (часто сокращенно ES) — это стандартизированный язык программирования, который используется для написания сценариев и создания веб-приложений. Это язык, на котором основан JavaScript и который обеспечивает основу для динамических и интерактивных функций современных веб-приложений. ECMAScript поддерживается организацией по стандартизации Ecma International и регулярно обновляется новыми функциями и улучшениями.
ECMAScript 2023 — это следующая версия языка ECMAScript, и ожидается, что она будет выпущена в конце июня 2023 года. Четыре предложения по ECMAScript 2023 (ES14) были завершены в этом году и в настоящее время перечислены на GitHub как завершенные предложения, которые приближаются к официальному релизу. Ожидается, что эти предложения будут официально опубликованы в июне 2023 года.
Рассмотрим каждое из этих предложений.
Поиск массива из последнего
Это предложение добавляет следующие два метода к прототипам Array
и TypedArray
:
findLast()
findLastIndex()
Эта новая предлагаемая функция работает аналогично двум существующим методам, называемым Array.prototype.find
и Array.prototype.findIndex
. Однако есть одно важное отличие: вместо того, чтобы начинать с начала массива и двигаться вперед, предлагаемая функция будет начинаться с конца массива и двигаться назад. Методы Array.prototype.find
и Array.prototype.findIndex
выполняют поиск в массиве от первого элемента к последнему, а методы findLast()
и findLastIndex()
выполняют поиск в массиве от последнего элемента к первому.
Давайте посмотрим на несколько примеров, чтобы увидеть, как работают эти новые методы:
const isMultipleOfTwo = (number) => number % 2 === 0; const numbers = [4, 9, 1, 2, 8]; // traverse from first to the last element console.log(numbers.find(isMultipleOfTwo)); // 4 console.log(numbers.findIndex(isMultipleOfTwo)); // 0 // traverse from last to the first element console.log(numbers.findLast(isMultipleOfTwo)); // 8 console.log(numbers.findLastIndex(isMultipleOfTwo)); // 4
Хашбанг Грамматика
hashbang
— это набор символов, помещаемых в начало скрипта, который указывает, какой интерпретатор должен запускать программу. Эта предлагаемая функция призвана помочь разработчикам, которые хотят создавать сценарии, которые можно выполнять непосредственно из командной строки. Это упростит процесс определения интерпретатора скрипта, облегчив запуск скрипта в различных операционных системах. Без хеш-банга вам обычно нужно использовать определенную команду (например, «node
») для выполнения скрипта в терминале.
// hashbang.js #!/usr/bin/env node console.log('hashbang'); // nohashbang.js console.log('no hashbang')
Символы как ключи WeakMap
Первоначально WeakMap
в JavaScript позволял использовать только objects
как keys
. Objects
и Symbols
уникальны и не могут быть продублированы, что делает их подходящим выбором для ключей в WeakMap
. Однако в предыдущих версиях или спецификациях использование keys
ограничивалось только objects
. предыдущие версии или спецификации разрешали использовать только объекты в качестве keys
, но это предложение добавляет незарегистрированные символы в список разрешенных ключей.
Давайте посмотрим на пример, чтобы увидеть, как это работает:
const wm1 = new WeakMap(); const wm2 = new WeakMap(); const o1 = {}; const o2 = function () {}; wm1.set(o1, 37); wm1.set(o2, "azerty"); wm2.set(o1, o2); // a value can be anything, including an object or a function wm2.set(wm1, wm2); // keys and values can be any objects. Even WeakMaps! // use symbol as key const wm3 = new WeakMap(); const key = Symbol("symbolAsKey"); wm3.set(key, "Value"); console.log(wm3.get(key)); // Value
Изменить массив путем копирования
В предложении Change Array by Copy добавлены новые методы для Array.prototype
и TypedArray.prototype
, которые возвращают новую копию вместо изменения исходного массива на месте.
Это предложение вводит следующие свойства функции для 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
Давайте рассмотрим несколько примеров того, как это работает:
// toReversed() // Array const original = [1, 2, 3, 4]; const reversed = original.toReversed(); console.log(original); // [ 1, 2, 3, 4 ] console.log(reversed); // [ 4, 3, 2, 1] // TypedArray const original1 = new Uint8Array([1, 2, 3, 4]); const reversed1 = original1.toReversed(); console.log(original1); // [ 1, 2, 3, 4] console.log(reversed1); // [ 4, 3, 2, 1] // toSorted() // Array const original = [7, 10, 9, 8]; const sorted = original.toSorted((a, b) => a - b); console.log(original); // [ 7, 10, 9, 8 ] console.log(sorted); // [ 7, 8, 9, 10 ] // TypedArray const original1 = new Uint8Array([7, 10, 9, 8]); const sorted1 = original1.toSorted((a, b) => a - b); console.log(original1); // [ 7, 10, 9, 8 ] console.log(sorted1); // [ 7, 8, 9, 10 ] // toSpliced() const original = [1, 5]; const spliced = original.toSpliced(1, 0, 2, 3,4); console.log(original); // [ 1, 5] console.log(spliced); // [ 1, 2, 3, 4, 5 ] // with() // Array const original = [1, 3, 3, 4, 5]; const replaced = original.with(1, 2); console.log(original); // [ 1, 3, 3, 4, 5 ] console.log(replaced); // [ 1, 2, 3, 4, 5 ] // TypedArray const original1 = new Uint8Array([1, 3, 3, 4, 5]); const replaced1 = original1.with(1, 2); console.log(original1); // [ 1, 3, 3, 4, 5 ] console.log(replaced1); // [ 1, 2, 3, 4, 5 ]
Заключение
Я надеюсь, что эта статья дала вам подробный обзор того, что вы можете ожидать от ECMAScript 2023. У нас еще есть время до июня, и есть вероятность, что в окончательный выпуск ECMAScript 2023 могут быть добавлены дополнительные функции.
Я надеюсь, что эта статья была полезной и приятной для вас. Если у вас есть какие-либо вопросы или комментарии, пожалуйста, не стесняйтесь обращаться ко мне. Я также был бы признателен 👏, если вам понравился пост, чтобы другие тоже могли его найти.
Спасибо, и увидимся в следующий раз!
Рекомендации
Указывающий человек в формате PNG загружается сhttps://www.vecteezy.com/free-png/man-pointing