我正在编写一个 Node.js 应用程序。有一些地方需要修改函数参数,例如,这个 Express 中间件添加用户到请求中,以便后续查看:
exports.fetchUserDetails = function (req, res, next) {
httprequest(opts, function (err, res, body) {
req.user = body.user;
next()
}
}
事情是这样的,我开始使用静态代码分析器(ESLint),它总是抱怨重新分配函数参数(http://eslint.org/docs/rules/no-param-reassign)。我想这个规则是有原因的。
我知道修改函数参数可能是不好的,就像这个例子:
function modifyParam(param) {
param.a = 2
}
var obj = { a: 1 };
console.log(obj); // outputs { a: 1 };
modifyParam(obj);
console.log(obj); // outputs { a: 2 };
但是我真的看不到重构我的中间件而不重新分配参数的其他方法。
所以我的问题是:
- 何时可以使用参数重新分配?
- 如何重构我的中间件以避免这种情况?(或者应该像现在这样保留它)