在Javascript中解构赋值的好处

时间:2016-03-22 23:45:27

标签: javascript ecmascript-6 destructuring

我越来越多地遇到使用ES2015引入的解构分配的代码,更常见的是我发现很难理解作者正在做什么。我可以看到,在某些情况下,解构可能非常有用,但我的印象是它经常会引入不必要的代码复杂性。

E.g。 MDN上的Nested object and array destructuring示例正在使用此行来构建嵌套数组:

var { title: englishTitle, translations: [{ title: localeTitle }] } = metadata;

这样的优势在哪里,对我来说看起来更具可读性:

var englishTitle = metadata.title,
    localeTitle  = metadata.translations[0].title;

解构任务正在解决哪些问题?

何时使用它们何时不使用?

1 个答案:

答案 0 :(得分:4)

好处是您不需要重复解构表达式。当然,在你的例子中它几乎没有什么区别,因为你已经在metadata变量中得到了它。

但如果它是一个非常复杂的表达式或其他东西,你可以保存一个额外的变量。例如,比较此函数

function example(metadata) {
    var englishTitle = metadata.title,
        localeTitle  = metadata.translations[0].title;
    …; // use englishTitle and localeTitle
}

function example({title: englishTitle, translations: [{title: localeTitle}]}) {
    …; // use englishTitle and localeTitle
}

它变得更加明显是如何声明的。

对于每个语法糖都是如此:只在它使代码变甜的地方应用它。