首页 > 解决方案 > 传入一个完整的对象 ala 对象解构良好实践/是否具有性能影响?

问题描述

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

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 中所做的那样进行解释?

标签: javascriptperformanceoptimizationstandards

解决方案


我认为这里的主要区别是作者的意图

1)您想将一些失去关联的属性传递给函数,它们都来自同一个数据源,这是一个巧合。

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

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

关于“性能”和“最佳实践”:

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

并且“最佳实践”总是固执己见,我认为这两个版本都是有效的。


推荐阅读