传递一个完整的对象 ala 对象解构良好实践/对性能有影响吗?

Does passing in a full object ala object destructuring good practice / have performance implications?

调用解构对象参数的函数时,您更喜欢哪种传递属性的方式。被调用的函数具有签名

function constructDebugLog({
  currentOS,
  originalUserStashState,
  userAgent,
}) { ...

函数的哪种调用方式更合理

1

const { currentOS, originalUserStashState, userAgent } = store.getState()
constructDebugLog({ currentOS, originalUserStashState, userAgent })
    .then(resolve)
    .catch(reject)

2

constructDebugLog(store.getState())
    .then(resolve)
    .catch(reject)

调用getState()提供了一个复杂的对象,但由于接收函数对其进行了解构,是否还需要像#1 那样进行解释?

我认为这里的主要区别在于作者的意图:

1) 您想将一些不相关的属性传递给函数,它们都来自同一个数据源纯属巧合。

2) 你传递状态。函数解构意味着它只访问状态的某些属性,但作者假设将传递一个状态对象。

在这种情况下,我认为后者适用,然后我会使用那个版本(它也使代码在我看来更具可读性)。

关于 "performance" 和 "best practice":

你有性能问题吗?如果没有,你为什么要打扰?如果是,则这两行不是原因。

而且 "best practice" 总是自以为是,我认为这两个版本都有效。