这个coffeescript构造的意义?

时间:2014-08-15 19:04:00

标签: coffeescript

在优秀的paths.js库中,我看到使用了这个结构:

({a,b}) ->
    c= a * b
    #...

我可以看到它是一个非常简洁的解包参数字典的方法,但我没有在coffeescript文档中提到它。

有趣的是,

{x,y}({x,y})->编译成非常不同的javascript结构。

是否有解释在文档中正确使用这些内容?

1 个答案:

答案 0 :(得分:2)

这只是隐藏在函数参数列表中的destructured object assignment。鉴于此:

o = { a: 'A', b: 'B', c: 'C' }
你可以这样说:

{a, b} = o

作为简写:

a = o.a
b = o.b

所以这"

({a,b}) ->
    c = a * b

从函数的参数(某种对象)中提取ab个键的值,并将它们分配给本地a和{{ 1}}变量。换句话说,它与:

相同
b