Новое:Talanto осенью: поиск с цифрами, вакансия по шагам и каталог компаний

+1 210новых вакансий за сутки·93 612вакансий открыто сейчас·Новое:Talanto осенью: поиск с цифрами, вакансия по шагам и каталог компаний

Новые вакансии в TelegramРаботодателям
Talanto
Вакансии
Компании7 266
РезюмеAIПодготовкаСтатьи
BoostТарифыBoost
Войти

Не нашли подходящее?

Пусть нужная вакансия найдёт вас сама.

  1. Подборка в TelegramНовые вакансии по вашему фильтру — сразу в бота.Подключить
  2. Мэтчи по резюмеЗагрузите резюме — покажем, где вы подходите лучше всего.Загрузить
  3. Сохранить фильтрНастройте поиск один раз и возвращайтесь к новым вакансиям.Настроить
Что нового на TalantoTalanto осенью: поиск с цифрами, вакансия по шагам и каталог компаний

Для работодателей

Опубликуйте вакансию — отклики придут в ваш кабинет.

  1. Вакансиябесплатно
  2. Откликиконтакты бесплатно
  3. Наймэтапы и интервью

40 компаний публикуют вакансии напрямую · 4 401 кандидат открыт к предложениям

Разместить вакансию

Популярные направления

Все подборки
  • Python17 126
  • Облачные технологии14 083
  • QA вакансии3 456
  • Backend вакансии2 115
  • Инженер данных1 809
  • Продакт-менеджер1 261

Разработка

  • Android1 862
  • iOS1 700
  • Fullstack вакансии986
  • AI вакансии950
  • Frontend вакансии744
  • Mobile вакансии44

По стеку

  • Go8 688
  • Java6 537
  • Node.js2 026
  • .NET1 722
  • Kotlin1 611
  • Rust1 458
  • C#710
  • PHP682
  • C++571

DevOps и инфраструктура

  • Kubernetes7 772
  • DevOps вакансии6 054
  • Linux-инфраструктура5 493
  • Terraform / IaC4 275
  • CI/CD3 239
  • Мониторинг и Observability1 790
  • SRE568
  • Кибербезопасность458

Аналитика и данные

  • Data Scientist1 143
  • Бизнес-аналитик923
  • Аналитик данных857
  • Системный аналитик152

Другие направления

  • Проджект-менеджер620
  • UI/UX дизайн146
  • Ручное тестирование14

По регионам

  • Вакансии в США44 276
  • Вакансии в Европе23 819
  • Вакансии в Канаде4 471
  • Работа в России3 904

По формату

  • Удалённые вакансии74 928
  • Релокация в США44 273
  • Гибридная работа12 388
  • Офисная работа7 083

По уровню

  • Senior вакансии42 625
  • Middle вакансии20 854
  • Junior вакансии6 721

Сейчас нанимают

Все компании
  • Wise190 вакансий
  • Rakuten189 вакансий
  • ASML166 вакансий
  • Grab137 вакансий
  • Celonis39 вакансий
  • Spotify37 вакансий
  • Adyen28 вакансий
  • Infobip28 вакансий
  • Monzo20 вакансий
  • Darktrace16 вакансий

Вакансии из 344 источников: карьерные страницы компаний и джоб-борды.

КомпанииО насНовостиПубличная офертаУсловия использованияПолитика конфиденциальностиПоддержка
←К теме JavaScriptВсе вопросы
JavaScriptJuniorКодинг

Что такое деструктуризация (destructuring assignment)? Приведите примеры с массивами и объектами.

В закладки
Сначала попробуйте ответить сами30 секунд
Сравнить с ответом ↓

Деструктуризация — синтаксис извлечения значений из массива или объекта в переменные за одно выражение, с поддержкой дефолтов, переименования и вложенных паттернов.

Массивы

const rgb = [255, 128, 0];

// Базовое извлечение
const [r, g, b] = rgb;          // 255, 128, 0

// Пропуск элементов
const [, , blue] = rgb;         // blue = 0

// Дефолт (только когда значение === undefined)
const [x, y, z = 1, w = 2] = [10, 20]; // z=1, w=2

// Swap без temp-переменной
let a = 1, b2 = 2;
[a, b2] = [b2, a];              // a=2, b2=1

// Rest
const [head, ...tail] = [1, 2, 3, 4]; // head=1, tail=[2,3,4]

Что такое деструктуризация

Деструктуризация — синтаксический сахар над присваиванием: JS «сопоставляет» шаблон слева с данными справа и разбирает их по переменным. Поддерживаются массивы, объекты, вложенные структуры и параметры функций.

Объекты

const user = {
  id: 42,
  name: 'Alice',
  address: { city: 'Berlin', zip: '10115' },
  role: undefined,
};

// Базовое
const { id, name } = user;

// Переименование
const { id: userId, name: userName } = user;

// Дефолт (только для undefined, не для null!)
const { role = 'viewer' } = user;  // role = 'viewer'
const { role: r = 'viewer' } = { role: null }; // r = null — дефолт НЕ применяется

// Вложенная деструктуризация
const { address: { city, zip } } = user;

// Rest
const { id: uid, ...rest } = user; // rest = { name, address, role }

В параметрах функции

// Вместо function render(options) { const title = options.title ... }
function render({ title = 'Untitled', maxWidth = 800 } = {}) {
  return `<section style="max-width:${maxWidth}px"><h1>${title}</h1></section>`;
}

render({ title: 'Hello' }); // maxWidth = 800
render();                    // дефолт = {} предотвращает TypeError

Практический пример: fetch-ответ

async function loadUser(id) {
  const res = await fetch(`/api/users/${id}`);
  if (!res.ok) throw new Error(`HTTP ${res.status}`);

  const { data: { id: userId, name, email }, meta: { updatedAt } } = await res.json();
  return { userId, name, email, updatedAt };
}

Подводные камни

  • null не триггерит дефолт. Дефолтное значение подставляется только при undefined. Если API возвращает { role: null }, дефолт = 'viewer' не сработает — переменная получит null.
  • Вложенная деструктуризация выбрасывает TypeError при null/undefined. const { address: { city } } = user упадёт, если user.address равен null. Используйте опциональную цепочку или промежуточный дефолт: const { address: { city } = {} } = user.
  • Деструктуризация объекта в начале строки. { a, b } = obj без const/let/var парсится как блок, а не деструктуризация — нужны скобки: ({ a, b } = obj).
  • Rest должен быть последним. const { ...rest, id } = obj — синтаксическая ошибка; rest-элемент всегда идёт в конце паттерна.
  • Производительность при глубоком вложении. Многоуровневая деструктуризация в hot path (например, внутри Array.prototype.reduce на тысячах элементов) создаёт лишние временные объекты. Прямой доступ через точку быстрее.
  • Читаемость при переименовании + дефолт. const { x: myX = 0 } = obj — порядок читается как «взять x, переименовать в myX, дефолт 0». Многие путают порядок и пишут const { myX = 0: x } = obj, что является ошибкой.

Частые вопросы на собеседовании

  • Как защититься от XSS в браузерном приложении? Где помогают CSP, escaping и Trusted Types?
  • В чём разница между var, let и const? Как hoisting влияет на каждое из них?
  • Что такое Promise? Чем они отличаются от callback'ов?
  • Для каких задач JavaScript является сильным выбором, а где лучше честно выбрать другой язык?

Типичные ошибки

  • Смешивать «деструктуризация» с похожим механизмом без критерия выбора.
  • Игнорировать риск: неверно оценить границы применения темы «деструктуризация» и получить хрупкое решение.
  • Показывать только синтаксис и не объяснять поведение в runtime или сборке.

Что проверяет интервьюер

  • Объясняет извлечение значений из массивов и объектов с дефолтами и переименованием.
  • Показывает на примере, как работает: деструктуризация сопоставляет форму слева со значением справа, позволяет брать вложенные свойства и задавать default только когда значение undefined.
  • Называет production-нюанс и граничный случай для темы «деструктуризация».

Как вы знаете этот вопрос?

Проверить себя по теме JavaScript →

Источники

  • https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Destructuring

Связанные темы

JavaScriptdata-transformationsjavascript-language

Вакансии с этим навыком

JavaScript вакансии
  • Summer 2027 T-Ads Software Engineering Internship
  • Full-Stack Engineer – AI-Native Solutions
  • Technical Lead, Full-Stack Engineering – AI-Native Solutions
  • Staff Software Engineer, Full-Stack (Arsenal 2)
  • Senior Software Engineer, Full-Stack (Arsenal 2)