Ответ вслух Middle Современный синтаксис обновлено

Какие новые возможности JS вы используете

Вопрос

Какие возможности стандарта ES2020 и новее вы используете в работе? Какие задачи они решают?

Попробуйте сами

Ответьте вслух за 2 минуты, как на собесе. Потом сверьтесь с тезисами: что прозвучало, а что нет.

Показать ответ и разбор

Коротко

Образцовый ответ: «Каждый день пишу ?. и ??: первое убирает цепочки a && a.b && a.b.c, второе подставляет значение по умолчанию только для null и undefined и не ломает ноль и пустую строку, как это делал . Для ленивой инициализации удобно cache[key] ??= compute().

Что должно прозвучать в ответе

  • `?.` и `??` вместо цепочек проверок и `||` с ловушкой нуля

  • Логическое присваивание `??=`, `||=` для ленивой инициализации

  • `at(-1)`, `Object.hasOwn`, `structuredClone`

  • Неизменяемые методы `toSorted`, `toReversed`, `with` для состояния

  • `Object.groupBy`, `Promise.allSettled`/`Promise.any`, `Promise.withResolvers`

  • Поля и `#`-члены классов, top-level await в модулях

Что могут спросить следом

  • Чем toSorted лучше, чем [...arr].sort()?
  • Какие из этих возможностей требуют полифилов для старых браузеров?
  • Почему Object.groupBy возвращает объект без прототипа?

Разбор

Образцовый ответ: «Каждый день пишу ?. и ??: первое убирает цепочки a && a.b && a.b.c, второе подставляет значение по умолчанию только для null и undefined и не ломает ноль и пустую строку, как это делал ||. Для ленивой инициализации удобно cache[key] ??= compute(). Из методов: at(-1) для последнего элемента, Object.hasOwn вместо hasOwnProperty, structuredClone для глубокой копии. В React-коде пользуюсь неизменяемыми toSorted, toReversed и with: они возвращают новый массив, и не нужно помнить, что sort мутирует. Для группировки теперь есть Object.groupBy, его результат без прототипа, так что ключ вроде constructor не конфликтует с унаследованным. Для асинхронщины: Promise.allSettled, когда нужны все результаты, Promise.any для первого успешного. В классах: публичные и приватные поля через решётку. В модулях top-level await, например для загрузки конфигурации».

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.

Термины по теме