我越来越多地遇到使用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;
解构任务正在解决哪些问题?
何时使用它们何时不使用?
答案 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
}
它变得更加明显是如何声明的。
对于每个语法糖都是如此:只在它使代码变甜的地方应用它。