Javascript 消除无参数重新分配错误(eslint)的最佳方法是什么?
我目前正在这段代码上试用eslint,但遇到了一个错误(请参见屏幕截图)。我不确定消除错误的最佳方法是什么 代码段:Javascript 消除无参数重新分配错误(eslint)的最佳方法是什么?,javascript,eslint,Javascript,Eslint,我目前正在这段代码上试用eslint,但遇到了一个错误(请参见屏幕截图)。我不确定消除错误的最佳方法是什么 代码段: let pathFor = ( path, view ) => { if ( path.hash ) { view = path; path = view.hash.route; delete view.hash.route; } 尝试消除错误(该方法有效,但不确定是否是最佳方法): 这是《升华》中埃斯林廷的截图 有很多方法可以做到这一点。
let pathFor = ( path, view ) => {
if ( path.hash ) {
view = path;
path = view.hash.route;
delete view.hash.route;
}
尝试消除错误(该方法有效,但不确定是否是最佳方法):
这是《升华》中埃斯林廷的截图
有很多方法可以做到这一点。linter出错是因为您正在修改一个参数,阅读您的代码的人可能会对该参数感到困惑,或者导致其他问题。linter推荐的编程基本上是一种更“功能化”的风格(创建一个新变量而不是变异一个旧变量),这可能是正确的。我过去使用的一种方法是“匈牙利案例”: 但是,小下划线的含义可能是任意的,这取决于谁在阅读您的代码 但是,我认为你的方式很好。正如菲尔·卡尔顿所说: 在计算机科学中只有两件困难的事情:缓存失效和命名
我认为这个问题更多的是一个“最佳命名实践”的问题,而不是任何东西。如果是这样的话,我就不会在这上面浪费太多精力了 这个函数到底要完成什么?看起来你在传递两个值,然后用一个值覆盖另一个值?@Jonah Williams噢,对不起,我已经编辑过了。这个代码片段是我从样板中复制/粘贴的。我只是在练习eslinting,因为它对我来说是新的。我只想知道实现no-param-reassign的最佳方法。将
“no-param-reassign”:0
添加到.eslintrc
文件中。否则,您的更新代码就可以了。在您的修订版本中,view
和path
不会在任何地方声明。如果它们不存在于更高的作用域中,那将是一个错误。@AndyRay本文将说明不重新分配函数参数的重要性。注意。感谢您澄清此问题:)在您的示例中,视图
和路径
从未声明。那可能会让埃斯林特再次出轨。它不应该是const view
const path
@记住正确,我省略了初始变量声明(理论上它们可以在函数中声明,但假设它们在函数范围外初始化,稍后在函数体中“填充”)。抢手货
let pathFor = ( pathData, viewData ) => {
if ( pathData.hash ) {
view = pathData;
path = view.hash.route;
delete view.hash.route;
}
let pathFor = (_path, _view) => {
if (_path.hash) {
view = _path;
path = view.hash.route;
delete view.hash.route;
}