0

很简单,我在节点中看到了以下使用 coffeescript 的语法,而我从未在浏览器中看到过使用 coffeescript。

  {foo} = app.locals.foo

我前往 js2coffee 看看这是做什么的,但它在 js 输出中似乎与

  foo = app.locals.foo

那么这里发生了什么?{}在这种情况下,语法是什么意思?你为什么要使用它?

4

1 回答 1

5

来自精美手册

解构赋值

为了更方便地从复杂的数组和对象中提取值,CoffeeScript 实现了 ECMAScript Harmony 提出的解构赋值语法。当您将数组或对象字面量分配给值时,CoffeeScript 会分解并匹配双方,将右侧的值分配给左侧的变量。
[...]
解构赋值可用于任何深度的数组和对象嵌套,以帮助提取深度嵌套的属性。

相关的例子是这个:

futurists =
  sculptor: "Umberto Boccioni"
  painter:  "Vladimir Burliuk"
  poet:
    name:   "F.T. Marinetti"
    address: [
      "Via Roma 42R"
      "Bellagio, Italy 22021"
    ]

{poet: {name, address: [street, city]}} = futurists

这是这个的简写:

name   = futurists.poet.name
street = futurists.poet.address[0]
city   = futurists.poet.address[1]

你可以在这里看到它的作用。

基本上,解构赋值的对象形式允许您以某种自然的方式解包对象。也许一个更简单的例子会有所帮助:

o =
    a: 'b'
    c: 'd'
    e: 'f'

{a, e} = o

这是以下的简写:

a = o.a
e = o.e

和另一个演示

您可以将解构赋值的左侧视为用于解包右侧的模式。

于 2013-03-13T19:50:59.703 回答