Определение значений переменных после деструктурирующего присваивания

Для отдельных фрагментов значения такие: 1) foo=1, bar=2; 2) foo=2, bar=1; 3) foo=[2], bar=1; 4) foo=[{baz:3}], bar=1; 5) foo=3, bar=1; 6) foo=1, bar=3.

Короткий ответ

Что ответить на собеседовании

Для отдельных фрагментов значения такие: 1) foo=1, bar=2; 2) foo=2, bar=1; 3) foo=[2], bar=1; 4) foo=[{baz:3}], bar=1; 5) foo=3, bar=1; 6) foo=1, bar=3.

Подробный разбор

Ответ с пояснениями

Условие

Найдите, какие значения получат переменные foo и bar в каждом из приведённых ниже фрагментов кода.


const run = () => {
    // 1
    const { foo, bar } = { foo: 1, bar: 2 }
    console.log('1)', { foo, bar }) // {foo: , bar: }
}

{
    // 2
    const { foo: bar, bar: foo } = { foo: 1, bar: 2 }
    console.log('2)', { foo, bar }) // {foo: , bar: }
}

{
    // 3
    const { foo: [bar], bar: foo } = { foo: [1], bar: [2] }
    console.log('3)', { foo, bar }) // {foo: , bar: }
}

{
    // 4
    const { foo: [bar], bar: foo } = { foo: [1], bar: [ { baz: 3 } ] }
    console.log('4)', { foo, bar }) // {foo: , bar: }
}

{
    // 5
    const { foo: [bar], bar: [ { baz: foo } ] } = { foo: [1], bar: [ { baz: 3 } ] }
    console.log('5)', { foo, bar }) // {foo: , bar: }
}

{
    // 6
    const value = {
        foo: [ { baz: 1 } ],
        baz: 2
    };

    const { foo: [ { baz: foo } ], bar: { baz: bar } = { baz: 3 } } = value;
    console.log('6)', { foo, bar }) // {foo: , bar: }

Ответ

Для отдельных фрагментов значения такие: 1) foo=1, bar=2; 2) foo=2, bar=1; 3) foo=[2], bar=1; 4) foo=[{baz:3}], bar=1; 5) foo=3, bar=1; 6) foo=1, bar=3.

Слева до двоеточия указано имя исходного свойства, после — новая привязка или вложенный шаблон. В шестом случае отсутствует bar, поэтому используется объект по умолчанию {baz:3}. Первый блок спрятан в run и без run() не печатается. В целом опубликованный фрагмент ещё и не закрывает последний блок фигурной скобкой: для запуска это нужно исправить.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее