很简单,我在节点中使用coffeescript看到以下语法,我从未在浏览器中看到过使用过coffeescript。
{foo} = app.locals.foo
我前往js2coffee看看这是做什么的,但它在js输出中似乎是相同的
foo = app.locals.foo
那么这里发生了什么? {}
语法在这种情况下意味着什么?你为什么要用它?
答案 0 :(得分:5)
来自fine manual:
解构分配
为了更方便地从复杂数组和对象中提取值,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]
您可以在行动over here中看到它。
基本上,析构化赋值的对象形式允许您以某种自然的方式解包对象。也许一个更简单的例子会有所帮助:
o =
a: 'b'
c: 'd'
e: 'f'
{a, e} = o
这是:
的简写a = o.a
e = o.e
另一个demo。
您可以将解构分配的左侧视为用于解开右侧的模式。