Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/417.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 消除无参数重新分配错误(eslint)的最佳方法是什么?_Javascript_Eslint - Fatal编程技术网

Javascript 消除无参数重新分配错误(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; } 尝试消除错误(该方法有效,但不确定是否是最佳方法): 这是《升华》中埃斯林廷的截图 有很多方法可以做到这一点。

我目前正在这段代码上试用eslint,但遇到了一个错误(请参见屏幕截图)。我不确定消除错误的最佳方法是什么

代码段:

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;
  }