摆脱无参数重新分配错误(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" 的问题。既然如此,我也不会在这上面浪费太多的精神力。
我目前正在尝试在此代码上使用 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" 的问题。既然如此,我也不会在这上面浪费太多的精神力。