Какие новые возможности JavaScript знаешь
Что проверяют
Знаете ли вы, что ECMAScript выходит каждый год, и что из свежих редакций уже можно брать в прод. Стрелочные функции и промисы давно база, а не новинка. Следом обычно спрашивают про поддержку браузерами и транспиляцию.
Как отвечать
Покажите, что понимаете ритм: TC39 ведёт предложения по стадиям, в июне утверждается очередная редакция, а браузеры часто выпускают фичи ещё до неё. Дальше примеры по годам:
- ES2022: приватные поля
#count, top-levelawaitв модулях,Array.prototype.at(-1),Object.hasOwn(), опцияcauseуError; - ES2023:
toSorted(),toReversed(),toSpliced()иwith(), которые возвращают новый массив вместо мутации, плюсfindLast(); - ES2024:
Object.groupBy()иMap.groupBy(),Promise.withResolvers(), флагvу регулярных выражений; - ES2025: итераторные хелперы (
map,filter,takeпрямо на итераторе и лениво), методы множествunion(),intersection(),difference(),Promise.try(), импорт JSON черезwith { type: 'json' }.
Можно упомянуть и то, что входит в платформу прямо сейчас: Temporal как замену неудобному Date и явное управление ресурсами через using. Статус проверьте перед собеседованием, поддержка у браузеров разная.
Про прод скажите так: синтаксис транспилируют Babel, SWC или esbuild под целевой browserslist, а новые методы закрывают полифиллами из core-js. Синтаксис вроде #field полифиллом не добавить, только транспиляцией.
Где спотыкаются
Перечисляют ES6 как «новые возможности». Это стандарт 2015 года, и ответ выдаёт, что за языком вы не следите.
Говорят, что стрелочные функции удобны как методы объекта, потому что у них нет своего this. Ровно наоборот: в методе объекта стрелка возьмёт this снаружи, и обращение к полям объекта сломается.
Не понимают, чем toSorted() отличается от sort(). Второй мутирует исходный массив, и в React такое изменение состояния не вызывает перерендер, потому что ссылка на массив осталась прежней.