Что такое ES10 (ES2019)?

На дворе 2019 год, и существует множество функций Javascript, которые одобрены комитетом TC39 и вскоре станут частью стандарта Javascript. А ES10 — это сокращение от ECMAScript 10-й редакции. Если вы думаете, что это следующая версия ES9, то вы правы.

Вопрос Но что такое ECMAScript?

О: Это язык сценариев спецификация, стандартизированный Ecma International. Это спецификация языка, на которой основан Javascript. Другими словами, Javascript — это всего лишь реализация этой спецификации. Существуют и другие реализации, но на сегодняшний день Javascript является наиболее популярным.

Вопрос Но почему они должны это придумывать?

О: Как вы знаете, существует множество браузеров. У каждого есть свой собственный Javascript Engine для выполнения кода JavaScript. Например: с Microsoft Edge у нас есть Chakra, с Firefox у нас есть SpiderMonkey, а с Chrome у нас есть V8. Если у каждого из них есть свой способ запуска кода Javascript, это будет действительно беспорядочно. Один веб-сайт может отлично работать в этом Chrome, но полностью не работать в Microsoft Edge.

В конце этой статьи мы покажем вам, как всегда быть в курсе всех новейших функций Javascript. Давайте начнем читать.

Некоторые из новых функций ES10

Итак, давайте проверим их, взглянув на некоторые новые функции ES10.

1. Массив.flatMap():

Этот метод очень похож на метод карты ES6 с небольшой дополнительной работой. Не путайте с другим очень похожим методом .flatten(), который в основном сглаживает массив по заданной глубине (если вы используете Underscore, вы уже знакомы с этим методом).

Этот метод сочетает в себе map и flat и позволяет отображать элемент массива. Во-первых, он попытается отобразить каждый элемент массива, используя старую функцию отображения. После этого возвращаемый результат сводится к новому массиву, что в некоторых случаях весьма полезно.

Например:

2. Объект.fromEntries():

Он будет отображать или преобразовывать пары ключ-значение в новый объект. Он принимает только итерируемую структуру данных в качестве входных данных. Допустим, у нас есть массив записей, это пары ключей и значений в виде массивов. Когда вы вызываете этот новый метод, он создает объект из данного массива. До всего этого у нас был только Object.entries(), который делает противоположное тому, что берет объект и возвращает массив пар ключ-значение.

Например:

3. Опциональная привязка улова:

Это позволяет нам использовать try и catch без указания параметра ошибки в блоке catch.

До ES10 мы писали такой код:

У вас есть оператор try/catch, и, скажем, вы не хотите перехватывать ошибку или вам все равно, какую ошибку вы получите.

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

На первый взгляд красиво, но довольно спорно. Мы рекомендуем вам глубже изучить некоторые связанные сообщения, но, поскольку это выходит за рамки этой статьи, мы не будем усложнять.

Однако с ES10 мы могли бы быть более гибкими, написав такой код с помощью try/catch:

Как видите, в методе catch нет ни одного параметра. Это имеет смысл, когда вы знаете, что не собираетесь использовать объект исключения.

4. String.trimStart() и String.trimEnd():

Струны также претерпели некоторые изменения. Как вы могли догадаться, функция trimStart() удалит все пробелы в начале заданной строки.
Например, у нас есть строка с кучей пробелов в начале:

Функция trimEnd() делает то же самое, но в конце нашей строки.

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

5. Функция.toString():

Вы можете сказать, прочитав имя метода, что он вернет всю функцию в виде строки. Другими словами, он предоставит вам исходный код этой функции или ее представление.

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

В будущем вы не могли гарантировать, что этот «заполнитель» не станет синтаксически допустимым в некоторых будущих версиях Javascript. Кроме того, имейте в виду, что пробелы, символы новой строки или комментарии к событиям не будут отображаться в результатах. В реальных сценариях нам, возможно, редко придется использовать это, но это добавит нам как разработчикам больше возможностей для отладки.

Всегда будьте в курсе Javascript

Вопрос. Есть много новых функций, и в будущем их будет еще больше. Итак, как мы собираемся идти в ногу со временем в этом меняющемся мире?

О: В Github есть репозиторий предложений TC39 ECMAScript. TC39 — это комитет, отвечающий за эволюцию Javascript. В этом репозитории вы найдете документ для предложений ECMAScript на 4 этапах, начиная с этапа 0, который является соломенным человеком.

Когда предложение получает иллюстративный пример и описание высокоуровневого API, оно может перейти к этапу 1. На этапе 1 это фактически предложение. Затем предложение переходит на этап 2, где оно должно иметь наименьшую начальную спецификацию текста. На этапе 3 это уже кандидат, и его спецификация должна быть завершена, рассмотрена и утверждена. Наконец, этап 4 — это законченная линия. Если предложение доходит до этой стадии, это означает, что оно будет включено в следующую редакцию следующего стандарта ECMAScript.

Просто проверяйте репозиторий время от времени, читайте предложения и будьте на переднем крае Javascript!