摆脱无参数重新分配错误(eslint)的最佳方法是什么?

What is the best way to get rid of no-param-reassign error (eslint)?

我目前正在尝试在此代码上使用 eslint,但 运行 出现错误(参见屏幕截图)。我不确定消除错误的最佳方法是什么。

代码片段:

let pathFor = ( path, view ) => {
  if ( path.hash ) {
    view = path;
    path = view.hash.route;
    delete view.hash.route;
  }

尝试消除错误(可行但不确定是否是最佳方法):

let pathFor = ( pathData, viewData ) => {
  if ( pathData.hash ) {
    view = pathData;
    path = view.hash.route;
    delete view.hash.route;
  }

下面是sublime中eslinting的截图

有很多方法可以做到。 linter 正在抛出错误,因为您正在改变一个参数,这可能会让阅读您的代码的人感到困惑,或者导致其他问题。更多 "functional style" 的编程基本上是 linter 推荐的(创建一个新变量而不是改变旧变量),而且可能是正确的。我过去使用的一种方法是 "Hungarian case":

let pathFor = (_path, _view) => {
  if (_path.hash) {
    view = _path;
    path = view.hash.route;
    delete view.hash.route;
  }

但是,根据谁在阅读您的代码,小下划线的含义可能是任意的。

但是,我认为你的方式很好。正如菲尔卡尔顿所说:

There are only two hard things in Computer Science: cache invalidation and naming things.

我认为这个问题更像是 "best naming practices" 的问题。既然如此,我也不会在这上面浪费太多的精神力。