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