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

Массивы проще всего понять, потому что вы делаете именно это. Создайте переменную и присвойте ее массиву. Затем назначьте переменные в массиве и сделайте их равными этому исходному массиву. Он назначит переменные в зеркальном массиве переменным в деструктурированном массиве.

let foo = ["this", "is", "foo", "bar"]
let [that, was, faz, baz] = foo  

Как вы можете видеть выше, новые переменные во второй строке указывают на зеркальные значения в первой строке. Таким образом, это будет присвоено строке «это», а было присвоено «есть». Деструктурируя, вы создаете зеркало через переменную и можете получить доступ к этой «Вселенной» через нее.

ES6 был реализован с целью сделать язык лучше. Это означает, что вы можете предсказать, что произойдет. Если вы не помните, что происходит при деструктурировании, вы можете догадаться и, возможно, будете правы.

var [first, second, third] = someArray; 

Я не знаю, что такое «someArray», но мне это и не нужно. Я все еще могу сказать вам, что first теперь является значением первого элемента в «someArray».

Деструктуризация объектов немного отличается, но все еще интуитивно понятна. Если вы знаете ключ к паре ключ:значение, вы можете получить доступ непосредственно к значению через ключ.

let obj = {
year: 1,
"two years": "Two",
foo: { foo: "bar" }
}
let foo = obj

Вышеуказанный foo теперь будет напрямую присвоен значению, содержащемуся в объекте. Вместо использования obj.foo для извлечения значения {foo: «bar»} вы можете просто использовать foo. Теперь это будет {foo: «bar»}. Опять идея зеркала через переменную стоит. Здесь переменная — это сам объект. Теперь JavaScript будет знать, что нужно заглянуть внутрь obj и вытащить ключ foo, дающий вам переменную.

Есть несколько других трюков, о которых вам нужно подумать позже. Например, при деструктуризации массива вы можете пропустить ненужные значения с помощью пробела и запятой.

let someArray = [1,2,3]
let [first, , third] = someArray;

Теперь второй элемент в массиве будет пропущен. первым будет 1, а третьим будет 3. Вы можете перейти на MDN и получить все подробности, если у вас есть вопросы.

Помимо того, что все работает, крайне важно иметь глубокое понимание того, что делает код и почему. На этом сайте freecodecamp есть отличная статья на эту тему.

Это дает вам отличное понимание того, что делает код. Итак, теперь я могу понять, хочу ли я деструктурировать объект, мне нужно создать пустой объектный литерал {} для представления деструктурируемого объекта. Затем мне буквально нужно только поместить ключ в этот пустой объект и назначить его деструктурирующему объекту. Javascript ES6 просмотрит объект, найдет ключ и присвоит значение переменной простого слова.

const record = { payPerHour: 100,
                 job: 'developer' }
const { payPerHour } = record
payPerHour 
//=> 100

Теперь вы можете получить значение payPerHour, просто введя его, несмотря на то, что оно находится внутри объекта записи. Без деструктуризации вам нужно использовать record.payPerHour для доступа к значению.