私はES6でいくつかの破壊を行い、予期しない状況に遭遇しました。ここには何が起こったのtrivializedバージョンです。私の使用例で予期せぬ破棄の振る舞い、より深く破壊するときにキーを2回宣言しなければならない
let obj = {x: {y: 5}};
let {x: {y}} = obj;
console.log(x); // x is not defined
console.log(y); // 5
、私はx
とy
の両方へのアクセスを必要としていました。私はx
も破壊されていると予想していたでしょう。代わりに、所望の効果を得るために、私はこれをしなければならなかった:
let obj = {x: {y: 5}};
let {x, x: {y}} = obj;
console.log(x); // {"y":5}
console.log(y); // 5
は、しかし、私は{x, x: {y}}
は奇妙かつ直感的に見えると思います。私が気付いていない破壊的な秘密があるか、これはちょっとした破壊的な落とし穴ですか?
期待通りの直感性については、const {x:{x}} = {x:{x:5}} 'はどのように動作すると思いますか?それは最初の 'x'を分解し、' x'を2番目の 'x'に再割り当てすべきでしょうか?しかし、「x」は定数であり、再割り当てすることはできません。 'xは既に宣言されていますか?' – estus