?. безопасно продолжает доступ для не-nullish значения; ?? подставляет замену только для null/undefined. Остальные конструкции решают отдельные задачи копирования, присваивания и индексации.
Разбор современных операторов и методов JavaScript
?. безопасно продолжает доступ для не-nullish значения; ?? подставляет замену только для null/undefined. Остальные конструкции решают отдельные задачи копирования, присваивания и индексации.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
Объясните, что означают следующие конструкции языка:
- ?.
- ...
- ??
- &&=
- structuredClone(source)
- collection.at()
Ответ
?. безопасно продолжает доступ для не-nullish значения; ?? подставляет замену только для null/undefined. Остальные конструкции решают отдельные задачи копирования, присваивания и индексации.
- ?. — optional chaining: user?.name возвращает undefined для null/undefined; необъявленную переменную не спасает.
- ... — spread при разворачивании массива/объекта/аргументов и rest при сборе; объектная копия поверхностная.
- ?? — nullish coalescing: 0, false и '' сохраняются.
- &&= — присваивает правую часть, только если текущее значение truthy; левая часть вычисляется один раз.
- structuredClone(source) — глубокое копирование поддерживаемых структур, включая циклы; функции не клонируются.
- at(index) — доступ по индексу, отрицательный индекс считается с конца: array.at(-1). Set/Map не получают такой метод автоматически.
Эти операции не взаимозаменяемы: например, || и ?? по-разному обрабатывают ноль.