代码如下
var metadata = {
    title: "Scratchpad",
    translations: [
       {
        locale: "de",
        localization_tags: [ ],
        last_edit: "2014-04-14T08:43:37",
        url: "/de/docs/Tools/Scratchpad",
        title: "JavaScript-Umgebung"
       },
       {
        locale: "fg",
        localization_tags: [ ],
        last_edit: "2015-04-14T08:43:37",
        url: "/de/docs/Tools/Scratch",
        title: "JavaScript"
       }
    ],
    url: "/en-US/docs/Tools/Scratchpad"
};
var {title: englishTitle, translations: [{title: localeTitle}]} = metadata;
console.log(englishTitle); // "Scratchpad"
console.log(localeTitle); // "JavaScript-Umgebung"
title: englishTitle
取 metadata 对象中的 title 的值并赋值给变量 englishTitle
这个能看懂
translations: [{title: localeTitle}] 这里
title: localeTitle 这个能理解
translations: [{}] 这个语法想不通是啥意思了
|  |      1aristotll      2018-12-25 22:18:43 +08:00  1 取的是数组第一个元素 | 
|  |      21OF7G      2018-12-25 22:46:06 +08:00 只是数组解构和对象解构的组合 let [a, b] = [1, 2, 3] // a=1, b=2 | 
|      3FInt1620      2018-12-25 22:48:35 +08:00  1 translations: [{locale: "de"}] | 
|  |      4Sparetire      2018-12-26 01:21:33 +08:00 via Android  1 你就这么理解,解构左边所有出现在 key 的位置的标识符都是表示结构中的查找路径的,即查找你想要的那个值,出现在 value 位置的标识符就是实际被赋值的变量 这里只有 englishTitle 和 localeTitle 出现在 value 位置,所以它们是最终声明赋值得到的变量,它们的值就是等号右边对象根据查找路径找到的值 | 
|  |      6Cursive OP @FInt1620  主要是不理解 translations 后面的这个冒号的语义 因为之前学习的访问数组元素的语法是:translations[] | 
|      7UnderTaker666      2018-12-26 09:15:53 +08:00 解构的时候冒号可以理解为重命名 |