传递一个完整的对象 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" 总是自以为是,我认为这两个版本都有效。
调用解构对象参数的函数时,您更喜欢哪种传递属性的方式。被调用的函数具有签名
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" 总是自以为是,我认为这两个版本都有效。