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 回答