javascript - 将参数分配给函数内部的新值,好的还是坏的做法?
问题描述
可能是一个简单的问题,但我真的不知道这在实践中是好是坏。
我正在使用 redux 来管理状态,并且我总是在操作中执行我的逻辑,这些操作采用旧状态,执行一些逻辑和消息缩减程序:
动作(演示)
const updateFilters = (filters) => {
filters = filters.map(...);
}
但我的想法是创建一个新变量:
const updateFilters = (filters) => {
const newFilters = filters.map(...)
}
我的问题是: 将参数名称分配给新值(在第一个代码片段中)是否安全且不是坏习惯?
解决方案
我认为你应该区别于is it safe?
和is it a good practice?
- 重新分配局部变量安全吗?是的。
- 重新分配(局部)变量是一种好习惯吗?不一定。
重新分配变量很容易出错,并且会损害程序的可读性。有很多风格指南明确禁止它,因为:
- 阻止您访问分配给该变量的原始值
- 造成混乱
我个人的观点是,您可以简单地将每个变量视为不可重新分配,这只会使您的程序更清晰,从而降低意外行为的风险。
对声明为函数参数的变量赋值可能会产生误导并导致混淆行为,因为修改函数参数也会改变 arguments 对象。通常,分配给函数参数是无意的,并且表示错误或程序员错误。
https://eslint.org/docs/rules/no-param-reassign
另请阅读:
推荐阅读
- mysql - 在 WAMP 中,您可以将不同的数据库放在不同的驱动器上吗
- javascript - 如何停止表单中包含无效字段的表单提交?
- regex - GtkSourceView - Gedit:正则表达式匹配差异
- python - 如何检查多个参数而不会出现混乱的“if”语句?
- java - 首次渲染后屏幕外渲染损坏
- javascript - Sequelize - 外键始终为空
- java - SSLHandshakeException:没有适当的协议协议被禁用或密码套件不合适
- postgresql - 我可以使用 pg_dump 从未加密的 postgres 数据库迁移到加密的数据库吗?
- flutter - 如何通过GETX验证电子邮件、密码和登录信息?
- graphql - 在由团队成员创建的组织中查询打开的拉取请求?