推荐关注
› Meteor
› JSLint - a JavaScript code quality tool
› jsFiddle
› D3.js
› WebStorm
推荐书目
› JavaScript 权威指南第 5 版
› Closure: The Definitive Guide
Cursive

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

  •  
  •   Cursive · Dec 25, 2018 · 4673 views
    This topic created in 2870 days ago, the information mentioned may be changed or developed.

    代码如下

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

    7 replies  •  2018-12-26 09:15:53 +08:00
    aristotll
    aristotll
    Dec 25, 2018❤️1
    1
    取的是数组第一个元素
    1OF7G
    1OF7G
    Dec 25, 2018
    2
    只是数组解构和对象解构的组合
    let [a, b] = [1, 2, 3] // a=1, b=2
    FInt1620
    FInt1620
    Dec 25, 2018❤️1
    3
    translations: [{locale: "de"}]
    Sparetire
    Sparetire
    Dec 26, 2018 via Android❤️1
    4
    你就这么理解,解构左边所有出现在 key 的位置的标识符都是表示结构中的查找路径的,即查找你想要的那个值,出现在 value 位置的标识符就是实际被赋值的变量
    这里只有 englishTitle 和 localeTitle 出现在 value 位置,所以它们是最终声明赋值得到的变量,它们的值就是等号右边对象根据查找路径找到的值
    Cursive
    Cursive
    OP
    Dec 26, 2018
    5
    @Sparetire 谢谢。有点理解了
    Cursive
    Cursive
    OP
    Dec 26, 2018
    6
    @FInt1620 主要是不理解 translations 后面的这个冒号的语义
    因为之前学习的访问数组元素的语法是:translations[]
    UnderTaker666
    UnderTaker666
    Dec 26, 2018
    7
    解构的时候冒号可以理解为重命名
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   2126 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 35ms · UTC 16:22 · PVG 00:22 · LAX 08:22 · JFK 11:22
    ♥ Do have faith in what you're doing.