ECMAScript 2023 (ES14) — чего ожидать

В этом году есть четыре готовых предложения для ECMAScript 2023 (ES14). Все четыре перечислены на GitHub как завершенные предложения, официальный релиз которых близится к завершению. Ожидается, что они будут официально выпущены в июне 2023 года.

Теперь давайте подробнее рассмотрим каждое из этих предложений.

Поиск массива из последнего

Эта предлагаемая функция будет работать аналогично Array.prototype.find и Array.prototype.findIndex, но с той ключевой разницей, что она будет выполнять итерацию от последнего элемента к первому.

const array = [{ value: 1 }, { value: 2 }, { value: 3 }, { value: 4 }];

array.find(n => n.value % 2 === 1); // { value: 1 }
array.findIndex(n => n.value % 2 === 1); // 0

array.findLastIndex(n => n.value % 2 === 1); // 2
array.findLastIndex(n => n.value === 42); // -1

Хашбанг Грамматика

По сути, если мы создадим подобную команду CLI JavaScript/Node.js, система должна автоматически обнаружить и удалить первую строку перед выполнением Node.js. Это связано с тем, что первая строка не является допустимым кодом JavaScript, и интерпретаторы могут возвращать ошибку при ее обнаружении.

#!/usr/bin/env node

console.log('Hey!');

Таким образом, это предложение предлагает улучшить синтаксис JavaScript. Кроме того, системе не потребуется дополнительный шаг по удалению первой строки перед выполнением Node.js.

Символы как ключи WeakMap

Проще говоря, WeakMaps теперь будет поддерживать символы.

const weak = new WeakMap();

const key = Symbol('something');
const someObject = { /**/ };

weak.set(key, someObject);

Изменить массив копией

В этом предложении предлагается добавить к Array.prototype следующие свойства функции:

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

Все эти методы сохраняют исходное состояние целевого массива и возвращают его копию с примененными изменениями.

Итак, это неизменяемые методы.

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]

Краткое содержание

Поскольку еще апрель и у нас есть время до июня, есть вероятность, что в выпуск ECMAScript 2023 будут включены дополнительные функции.

Я надеюсь, что вы нашли эту статью информативной и приятной. Пожалуйста, не стесняйтесь обращаться ко мне с любыми вопросами или комментариями, которые могут у вас возникнуть. @наирихар