【问题标题】:Compelling ECMAScript 6 Destructuring use cases [closed]引人注目的 ECMAScript 6 解构用例 [关闭]
【发布时间】:2014-12-06 16:36:05
【问题描述】:

为什么在 ECMAScript 6 中引入解构?

【问题讨论】:

  • 这里似乎有两个不同的问题。您是在寻找“令人信服的用例”还是示例代码的解释/理由?
  • 引人注目的用例
  • @SamLeach 你可能想检查these examples out
  • 我已将问题编辑为特定问题。
  • 这对 SO 来说仍然不是一个很好的问题。要获得有关为什么某个功能被添加到一种语言或为什么它会以这种方式工作的信息,您更有机会从从事该语言工作的人那里得到答案。例如。 esdiscuss.org

标签: javascript ecmascript-6 ecmascript-harmony destructuring


【解决方案1】:

不知道我为什么要使用[x, y] = [y, x]

因为使用一个额外的变量两个交换两个值很麻烦,而且 JS 的传值函数调用不允许你编写 swap 函数。

ECMAScript 6 的解构功能最引人注目的用例?

我能想到的,这个主要是用来做的

  • 多个函数返回值

    function rgb2hsv(r, g, b) {
         …
         return {h, s, v};
    }
    …
    var {h, s, v} = rgb2hsv(…);
    

    Promise.spawn(function* () {
        …
        var [a, b] = yield [async1(), async2()];
        …
    })
    
  • importing modules,例如像

    var {abs, trunc, round} = require('Math')
    

【讨论】:

    【解决方案2】:

    简单的例子:

    var {forEach} = Array.prototype;
    forEach.call(document.querySelector(...
    

    参数解构很有趣:

    function ({opt1 = true, opt2 = false, opt3} = {}) { ...
    

    【讨论】:

    • 解构语法有默认值吗?
    • 哇,我不知道。 +1!
    • 是的,这不仅适用于参数列表,而且通常适用于:var { x = 3 } = {};
    • 这是你今天无用的解构脑筋急转弯:var {x} = 1; 做了什么?类型错误?还是……?
    • @torazaburo undefined 很有可能。 typeof (1).x == "undefined"
    【解决方案3】:

    这是另一个:Map#entries(key, value) 元组上返回一个迭代器。最优雅的迭代它们的方法是使用解构:

    for (var [key, value] of map.entries()) {
        // ...
    }
    

    【讨论】:

    • +1,这是我发布列表后想到的 :-)
    猜你喜欢
    • 2019-01-02
    • 2022-01-21
    • 2023-03-22
    • 1970-01-01
    • 1970-01-01
    • 2015-06-02
    • 2020-07-12
    • 1970-01-01
    相关资源
    最近更新 更多