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