Источник: 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 и другие типы, используйте явные преобразования).
Ниже приведена таблица совместимости браузеров:
Оператор нулевого слияния
Оператор нулевого слияния ?? — это логический оператор, используемый в формате leftExpr ?? rightxpr. Если значение leftExpr равно null или undefined, оно возвращает значение rightExpr, в противном случае — leftExpr.
?? есть в ES2020.
Это усовершенствование логического оператора ИЛИ (||), который используется в виде leftExpr || rightExpr. Когда leftExpr является ложным, || возвращает rightExpr, противном случае — leftExpr. Иногда выражение неожиданно возвращает rightExpr, когда leftExpr ложно, например false, ‘’, или 0.
Примеры:
Таблица совместимости:
Оператор опциональной последовательности
Оператор опциональной последовательности ?. — это синтаксический сахар для сокращенного вычисления булевых выраженийс возвращаемым 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.
Опциональная последовательность может использоваться для объекта, функции или массива.
Примеры:
Таблица совместимости:
Конвейерный оператор
Конвейерный оператор |> — это синтаксический сахар, используемый в формате выражение |> функция. Он создает цепные вызовы функций в удобочитаемом виде.
|> находится в стадии 1 TC39.
значение |> функция1 |> функция2 |> функция3 |> функция4 |> функция5 это эквивалент функция5(функция4(функция3(функция2(функция1(значение))))).
Примеры:
Более продвинутые примеры. Их стоит прочитать. Пока вы не можете их запустить. Это экспериментальные функции и поддержки браузеров еще нет.
Вывод
Языки программирования эволюционируют с течением времени. Интересно наблюдать, как они улучшаются, становясь более краткими и мощными.
Спасибо за чтение.
Читайте также:
Перевод статьи Jennifer Fu: The 4 Newest JavaScript Operations: An Introduction