Найти тему
Nuances of programming

Введение: 4 новейших операции JavaScript

Оглавление

Источник: Nuances of Programming

Технический комитет 39 (TC39)  —  это группа экспертов по JavaScript, которые работают над стандартизацией ECMAScript.

Рабочий процесс TC39 состоит из нескольких этапов:

  • Этап 0 (Идея): прием входных данных для спецификации.
  • Этап 1 (Предложение): предложение для рассмотрения высокоуровнего API.
  • Этап 2 (Черновик): точное описание синтаксиса и семантики с использованием формального языка спецификаций.
  • Этап 3 (Кандидат): назначенные рецензенты подписывают текущий текст спецификации.
  • Этап 4 (Завершение): дополнение готово к включению в формальный стандарт ECMAScript.

После этапа 4 предложения будут включены в следующую редакцию ECMAScript. Когда спецификация проходит ежегодную ратификацию в качестве стандарта, предложение утверждается.

Начиная с ES2015, в ECMAScript было введено много новых синтаксисов и функций. В статье представлены четыре из них: **, ??, ?., и |>.

Оператор возведения в степень

Оператор возведения в степень **  —  это вычислительный оператор, используемый в формате var1 ** var2. Он возвращает var1 в степени var2, что равносильно Math.pow, но в качестве операндов также можно использовать BigInt.

** находится в стандарте ES2016.

Примеры:

Оператор возведения в степень является правоассоциативным: 
a ** b ** c равно a ** (b ** c). 
Строка 7 эквивалентна 2 ** (3 ** 3).

BigInt есть в ES2020, поэтому ESLint не поддерживает его по умолчанию, хотя поставляется в браузерах. Без комментария в строке 8 он покажет ошибку “'BigInt' is not defined”) (BigInt неопределен). Комментарий сообщает ESLint, что BigInt является глобальной переменной. Поэтому не используйте правило no-undef для предупреждения.

Строка 10 выдает ошибку: “Uncaught TypeError: Cannot mix BigInt and other types, use explicit conversions” (Непойманная TypeError: не удается смешать BigInt и другие типы, используйте явные преобразования).

Ниже приведена таблица совместимости браузеров:

-2

Оператор нулевого слияния

Оператор нулевого слияния ??  —  это логический оператор, используемый в формате leftExpr ?? rightxpr. Если значение leftExpr равно null или undefined, оно возвращает значение rightExpr, в противном случае  —  leftExpr.

?? есть в ES2020.

Это усовершенствование логического оператора ИЛИ (||), который используется в виде leftExpr || rightExpr. Когда leftExpr является ложным, || возвращает rightExpr, противном случае  —  leftExpr. Иногда выражение неожиданно возвращает rightExpr, когда leftExpr ложно, например false, ‘’, или 0.

Примеры:

Таблица совместимости:

-3

Оператор опциональной последовательности

Оператор опциональной последовательности ?.  —  это синтаксический сахар для сокращенного вычисления булевых выраженийс возвращаемым undefined, если цепочка объектов имеет нулевую(null или undefined) ссылку в середине.

?. есть в ES2020.

a?.b эквивалентно a && a.b.

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

a?.b?.c?.d?.e эквивалентно a && a.b && a.b.c && a.b.c.d && a.b.c.d.e.

Опциональная последовательность может использоваться для объекта, функции или массива.

Примеры:

Таблица совместимости:

-4

Конвейерный оператор

Конвейерный оператор |>  —  это синтаксический сахар, используемый в формате выражение |> функция. Он создает цепные вызовы функций в удобочитаемом виде.

|> находится в стадии 1 TC39.

значение |> функция1 |> функция2 |> функция3 |> функция4 |> функция5 это эквивалент функция5(функция4(функция3(функция2(функция1(значение))))).

Примеры:

Более продвинутые примеры. Их стоит прочитать. Пока вы не можете их запустить. Это экспериментальные функции и поддержки браузеров еще нет.

-5

Вывод

Языки программирования эволюционируют с течением времени. Интересно наблюдать, как они улучшаются, становясь более краткими и мощными.

Спасибо за чтение.

Читайте также:

Читайте нас в Telegram, VK

Перевод статьи Jennifer Fu: The 4 Newest JavaScript Operations: An Introduction