技术解析

在学习 JavaScript 的解构赋值语法时,遇到了一个想不明白的语法
0
2021-09-02 02:23:27
idczone

代码如下

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


取的是数组第一个元素

只是数组解构和对象解构的组合
let [a, b] = [1, 2, 3] // a=1, b=2

translations: [{locale: "de"}]

你就这么理解,解构左边所有出现在 key 的位置的标识符都是表示结构中的查找路径的,即查找你想要的那个值,出现在 value 位置的标识符就是实际被赋值的变量
这里只有 englishTitle 和 localeTitle 出现在 value 位置,所以它们是最终声明赋值得到的变量,它们的值就是等号右边对象根据查找路径找到的值

谢谢。有点理解了

主要是不理解 translations 后面的这个冒号的语义
因为之前学习的访问数组元素的语法是:translations[]

解构的时候冒号可以理解为重命名

数据地带为您的网站提供全球顶级IDC资源
在线咨询
专属客服