Новые возможности ES10 / ECMAScript 2019

Каждый год выпускается новая версия ECMAScript на основе предложений, принятых комитетом TC39. Давайте посмотрим на новые функции, одобренные комитетом TC39.

Чтобы проверить это, вам необходимо обновить свой Chrome до версии 72.

Object.fromEntries ()

В более ранних версиях ECMAScript вы можете использовать Object.entries() для создания массивов пар ключ-значение из объекта. Но теперь вы можете просто обратить этот процесс, используя Object.fromEntries(). Это немедленно вернет новый объект с ключом и значениями.

String.prototype.trimStart () или trimEnd ()

У нас уже есть функция trim (), которая помогает нам избегать пробелов в строке. С помощью совершенно новых trimStart() и trimEnd(), вы можете выбрать, какую часть строки следует избегать .

Я использую метод JSON.stringify() для печати и отображения пустых мест в журнале консоли.

Правильно сформированный JSON.stringify

Было представлено новое предложение, чтобы JSON.stringify не возвращал некорректные строки Unicode. Предлагаемое решение состоит в том, чтобы представить непарные суррогатные кодовые точки как escape-последовательности JSON, а не возвращать их как отдельные единицы кода UTF-16.

JSON.stringify('\uDF06\uD834'); // → '"\\udf06\\ud834"'
JSON.stringify('\uDEAD'); // → '"\\udead"'

Вы можете проверить репозиторий tc39 для получения дополнительной информации об этом.

Array.prototype.flat ()

Метод flat() сглаживает вложенный массив до заданного значения. По умолчанию это значение будет равно 1, если вы не укажете значение. Если передать Infinity в качестве параметра внутри flat(), он будет рекурсивно запускаться бесконечное количество раз и сводит массив к одному единственному массиву.

Array.prototype.flatMap ()

Это несколько похоже на Array.prototype.Map(), но немного отличается. Однако Array.prototype.flatMap() даст вам пары значений в одном плоском массиве, где Array.prototype.Map() даст пары значений в каждом отдельном массиве.

Попробовать / поймать привязку

В этой версии ECMAScript у нас может быть необязательная привязка для try/catch. В более ранних версиях мы должны реализовать привязку catch, даже если нам не нужно ее использовать. Новое предложение позволяет нам удалить привязку catch, если она нам не нужна.

try {
   throw new Error('I am an error!');
}catch(error) {
   console.log(error);
}

Это было изменено в новом предложении, и мы можем использовать команду try / catch, как показано ниже:

Изменена функция Function.prototype.toString ()

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

Результат будет примерно таким:

function /* Adds numbers */  addNumbers (x) {
  let y = x + 5;
  return y;
}

Получатель Symbol.description

При создании символа вы можете указать описание символа для целей отладки. Чтобы вывести из console.log () описание символа, вам, возможно, придется преобразовать его в строку. Но теперь с новым предложением вы можете просто получить доступ к описанию с помощью Symbol.description.

Вы можете использовать приведенные ниже ссылки, чтобы узнать больше об этом.