javascript - 函数参数中的对象解构是一个好的模式吗?

标签 javascript design-patterns functional-programming ecmascript-6

<分区>

我真的爱上了用函数解构对象。

例如:

var buyCoffee = function({sku, pounds = 1, roast:''}){
 ...more code
}
buyCoffee({sku:"cf-100" pounds: 3, roast: 'dark'});
buyCoffee({sku:"cf-101" roast: 'light'});

优点

  • 类似于 args 对象的灵 active 。
  • 更简单
  • 如果我不需要它们,则不需要输入参数。

缺点

  • 变量名一直被锁定。
  • 柯里化(Currying)会更难。(据我所知)
  • 与传统参数相比,计算开销大吗?
  • 更难测试?

我想知道这种方法有什么缺点?随着我作为开发人员的成长,这是一个很好的模式吗?只是从战壕中寻找一些智慧。想法?

最佳答案

Variable names are locked all the way through.

完全没有。您可以轻松解构为任意变量:

function({sku:mySku, pounds:localPounds=1, roast=''}) { … // use mySku, localPounds and roast

Currying would be much harder.

无论如何,当您传递对象时,不会出现柯里化(Currying)。柯里化(Currying)可选参数总是很困难。

Potential computational overhead?

取决于您将其与什么进行比较。

关于javascript - 函数参数中的对象解构是一个好的模式吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41105007/

相关文章:

swift - 关于 RxSwift 中 flatMapLatest 的困惑

javascript - 删除 DOM 节点而不留空格

javascript - jQuery 插件选项 : required, 可选,不可访问

c# - 将 C# 字符串变量插入到 ASP.NET 代码后面的 Javascript 警报中

java - 工厂设计模式缺失环节的实现

functional-programming - Prolog 创建字典

javascript - 在成功函数内的 AJAX 请求中访问 "data"对象

java - 如何计算、控制和更新客户信用?

c++ - 游戏对象互相交谈

scala - 为什么在 Scala 中应该更喜欢 Option 进行错误处理而不是异常?