Деструктурирующее присваивание
разбираюсь с деструктуризацией
Подскажите, почему когда я обращаюсь к свойству через переменную созданную деструктуризацией, получаю undefined, а не значение ключа как в обращении через ключ console.log(obj['key']) // 'otvet'
const obj = {
key: 'otvet'
}
let {option} = obj
console.log(obj[option]) // undefined
console.log(obj['key']) // 'otvet'
Ответы (1 шт):
При деструктуризации, вы вытаскиваете значения в переменную, одноименную с названием ключа. Т.е. вытаскивание данных идет по ключу.
Если в объекте нет указанного ключа, вы получате undefined
const obj = {
key: 'otvet',
some: 'someValue'
}
const { key, some } = obj;
console.log('key', key)
console.log('some', some)
// Если надо задать другие наименования переменных при деструктуризации
const { key: myKey, some: value} = obj;
console.log('myKey', myKey)
console.log('value', value)
Обратите внимание, что в переменных лежит значение, а не ключ, поэтому обращение вида obj[key] неверно, т.к. это воспрмится как obj['otvet']
Такое может получиться только в одном случае(случайно или умышленно), когда значение совпадает с ключом:
const obj = {
key: 'key',
some: 'data',
data: 'value'
}
const { key, some, data } = obj;
console.log(obj[key])
console.log(obj[some])
console.log(obj[data])
Однако результат будет не тот, который вы ожидаете