6

なぜ ES6 は、構造化されていない代入に対して左側の代入がより理にかなっており、より有用であると判断したのですか? 一見しただけでは、状況に応じて両側で割り当てが発生する可能性があるため、コードがエラーを起こしやすくなっているように見えます。

let obj = { first: 'Jane', last: 'Doe' };
let { first: f, last: l } = obj;
// f = 'Jane'
// l = 'Doe'

f と l はどちらも左側で定義されているように見えます。左側の var 名と右側のそれらの var の値を組み合わせた値を使用しています。

この構文の論理的根拠がオブジェクト宣言構文と同じに保つことであるとすれば、ECMA が代わりに使用しなかった理由は次のとおりです。

let { f: first, l: last } = obj;
4

1 に答える 1

9

オブジェクト リテラルの構文を維持することになっているため、プロパティ名はコロンの前に来ます。構文はネストすることになっており、ターゲットが左側にある場合は正しく機能しません。

let {propName: [arrayElement, ...moreElements], otherName: {nestedProp: targetName}} = obj;

あなたのアプローチでは、それは

let {[arrayElement, ...moreElements]: propName, {targetName = nestedProp}: otherName} = obj;

コロンが意味をなさないところ。

于 2016-11-19T23:10:37.063 に答える