在学习 JavaScript 的解构赋值语法时,遇到了一个想不明白的语法

2018-12-25 22:13:14 +08:00
 Cursive

代码如下

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: [{}] 这个语法想不通是啥意思了

3368 次点击
所在节点    JavaScript
7 条回复
aristotll
2018-12-25 22:18:43 +08:00
取的是数组第一个元素
1OF7G
2018-12-25 22:46:06 +08:00
只是数组解构和对象解构的组合
let [a, b] = [1, 2, 3] // a=1, b=2
FInt1620
2018-12-25 22:48:35 +08:00
translations: [{locale: "de"}]
Sparetire
2018-12-26 01:21:33 +08:00
你就这么理解,解构左边所有出现在 key 的位置的标识符都是表示结构中的查找路径的,即查找你想要的那个值,出现在 value 位置的标识符就是实际被赋值的变量
这里只有 englishTitle 和 localeTitle 出现在 value 位置,所以它们是最终声明赋值得到的变量,它们的值就是等号右边对象根据查找路径找到的值
Cursive
2018-12-26 08:35:24 +08:00
@Sparetire 谢谢。有点理解了
Cursive
2018-12-26 08:38:49 +08:00
@FInt1620 主要是不理解 translations 后面的这个冒号的语义
因为之前学习的访问数组元素的语法是:translations[]
UnderTaker666
2018-12-26 09:15:53 +08:00
解构的时候冒号可以理解为重命名

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/520966

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX