Ich habe in ES6 etwas Destrukturierung durchgeführt und bin in eine unerwartete Situation geraten. Hier ist eine trivialisierte Version von dem, was passiert ist.Unerwartetes Destrukturierungsverhalten, zweimaliges Deklinieren eines Schlüssels beim Destrukturieren
let obj = {x: {y: 5}};
let {x: {y}} = obj;
console.log(x); // x is not defined
console.log(y); // 5
In meinem Anwendungsfall, brauchte ich Zugang sowohl zu x
und y
. Ich hätte erwartet, dass auch x
destrukturiert wurde. Stattdessen die gewünschte Wirkung zu bekommen, musste ich dies tun:
let obj = {x: {y: 5}};
let {x, x: {y}} = obj;
console.log(x); // {"y":5}
console.log(y); // 5
Aber ich denke, {x, x: {y}}
seltsam und nicht intuitiv aussieht. Gibt es ein Destrukturierungsgeheimnis, das mir nicht bekannt ist, oder ist das nur eine winzige Störung der Destrukturierung?
Wie zur Intuitivität Ihrer Erwartungen, wie würden Sie erwarten, dass sich const {x: {x}} = {x: {x: 5}} 'verhält? Sollte es das erste "x" zerstören und dann "x" dem zweiten "x" neu zuweisen? Aber 'x' ist eine Konstante und kann nicht neu zugewiesen werden. Sollte es "x wurde schon deklariert" werden? – estus