Какие новые возможности JS вы используете
Вопрос
Какие возможности стандарта ES2020 и новее вы используете в работе? Какие задачи они решают?
Попробуйте сами
Ответьте вслух за 2 минуты, как на собесе. Потом сверьтесь с тезисами: что прозвучало, а что нет.
Показать ответ и разбор
Коротко
Что должно прозвучать в ответе
`?.` и `??` вместо цепочек проверок и `||` с ловушкой нуля
Логическое присваивание `??=`, `||=` для ленивой инициализации
`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 ошибок.
Предыдущий вопрос
Map, Set, WeakMap и WeakSet
Следующий вопрос
undefined в spread перезаписывает дефолт