javascript - 传入一个完整的对象 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 中所做的那样进行解释?
解决方案
我认为这里的主要区别是作者的意图:
1)您想将一些失去关联的属性传递给函数,它们都来自同一个数据源,这是一个巧合。
2)你传递状态。该函数解构它意味着它只访问状态的某些属性,但作者假设将传递一个状态对象。
在这种情况下,我认为后者适用,然后我会使用那个版本(它也使代码在 IMO 中更具可读性)。
关于“性能”和“最佳实践”:
你有性能问题吗?如果没有,你为什么要打扰?如果是,这两条线不是它的原因。
并且“最佳实践”总是固执己见,我认为这两个版本都是有效的。
推荐阅读
- spring-boot - SpringBoot/Angular 应用程序中的访客模式
- wildfly-18 - Wildfly-18 中打开的文件描述符过多
- sql - 如何使用sql查询在给定开始时间和结束时间的情况下查找骑行的持续时间
- php - Symfony 5嵌入形式不持久外键
- c - 为什么在 C 中 2 个线程的执行比 1 个线程的执行慢?
- node.js - 等待中的意外保留字-希望对现有答案进行澄清
- flutter - 将 FutureProvider 变成 Provider
- javascript - Intl.NumberFormat.prototype.format() 中的默认舍入策略
- nginx - 长 URL 适用于 Python 请求,但不适用于 CURL 或 Web 浏览器 (nginx-uwsgi-django)
- angular - 角拦截器挂起