Node.js NodeJS未使用的变量

Node.js NodeJS未使用的变量,node.js,jslint,Node.js,Jslint,我的linter抱怨没有使用req和next变量。我知道它是次要的,但是怎样才能解决这个问题呢 /* GET home page. */ router.get('/', function(req, res, next) { res.render('index', {title: 'JDA POC'});

我的linter抱怨没有使用
req
next
变量。我知道它是次要的,但是怎样才能解决这个问题呢

/* GET home page. */                                                           
router.get('/', function(req, res, next) {                                     
  res.render('index', {title: 'JDA POC'});                                     
});
我试图删除
req
next
,但失败了。我试图将
req
next
更改为null,但又出现了一个错误


有解决方案吗?或者我应该忽略JSLint吗?

告诉JSLint取消此警告。这是你能做的最好的了

/*jslint unparam: true*/

router.get('/', function(req, res, next) {                                     
  res.render('index', {title: 'JDA POC'});                                     
});

/*jslint unparam: false*/
另一种解决方案是将变量命名为ignore

比如:

发件人:

JSLint引入了一个新的保留字:ignore。它用于参数设置 列出和in catch子句,以指示将 忽略。这将替换旧的unparam选项。未使用的警告将被删除 不可忽视

函数处理程序(忽略,值){
返回做一些有用的事情(值);
}


有很多方法可以解决这个问题,但最简单的方法是像救生索一样使用“one
ignore
”。JSLint最终屈服于这样一个事实,即一些第三方库将向您发送比您需要的更多的参数,我假设在本例中是这样,并且没有办法清理这些参数

当前的解决方案 为了让阅读您的代码的人更清楚,您可以将一个参数标记为
ignore
参数。与此相结合,您可以从此函数中删除最后一个参数
next
,因为它也是未使用的,您可以使用此代码来解决您的问题:

/*jslint white:true */
/*global router */
router.get('/', function(ignore, res) {
  "use strict";
  res.render('index', {title: 'JDA POC'});                                     
});
该代码在上运行
ignore
是,并以两种不同的方式使用

非常清楚,显然您不能说
函数(ignore,ignore,next)
和忽略两个参数,因为此时您已“重新定义
ignore
”。所以这个解决方案非常有限,在某些情况下不起作用

老办法 不幸的是,该代码没有链接,这是大多数人仍然用来删除代码的地方

在这里,您被unparam声明所困扰,尽管我建议您仍然清除
next
,并使用即将生效的
ignore
约定

/*jslint white:true */
/*global router */
/*jslint unparam:true */
router.get('/', function(ignore, res) {
  "use strict";
  res.render('index', {title: 'JDA POC'});                                     
});
/*jslint unparam:false */
疯狂的老办法,比你想象的更普遍 其他人已经完全疯狂地编写复杂的包装,所以这不是一个问题。我讨厌这样,但这里有一个完整性的例子(我认为这种垃圾是Crockford添加
ignore
param的原因):

我的意思是,那是棉绒,但很可怕。有时,您可以通过在单个全局名称空间中创建自己的包装来成功地使用它,但我不想离我的第三方库太远

JSLint评论;^) 就我个人而言,我不确定
ignore
是否比使用函数签名期望的名称更清晰。我承认这是一条JSLint规则,我不是100%相信它和其他规则一样有用。也就是说,每个人都知道什么是
jqXHR.fail(函数(jqXHR,textStatus,errorshown){})是,即使他们只希望抛出
错误
,但只有了解JSLint内部工作原理的人才能理解为什么参数列表中可能有
忽略
。我认为在与第三方库接口时使用众所周知的函数签名是有价值的

似乎JSLint应该看到函数在声明的
global
对象上被调用时没有抱怨,或者至少可以选择说某些
global
条目是您无法控制的对象

后脚本建议

<强> >:<强> > >代码>路由器。获取是您的控件下的代码,并且只使用 Req的用例,考虑重构参数的顺序,使它们与使用优先级顺序相匹配。我会告诉Crockford,这不是一个无用的做法(我知道,大量对冲!)。

你完全可以摆脱
next
,尽管我不知道如何修复关于
req
未被使用的警告?找一根更好的线<如果短绒警告不正确,则需要代码>请求
next
可以安全地删除,因为它实际上是不需要的。@KevinB我的linter正在声明没有被使用。我的linter只在next上发出警告,而不是Req,这会对声明和未使用的每个变量发出警告吗?如果需要,请删除第二条指令:
/*jslint unparam:false*/
/*jslint white:true */
/*global router */
/*jslint unparam:true */
router.get('/', function(ignore, res) {
  "use strict";
  res.render('index', {title: 'JDA POC'});                                     
});
/*jslint unparam:false */
/*jslint white:true, sloppy:true */
/*global router */
function convolutedRearrangementHack(res) {
  res.render('index', {title: 'JDA POC'});
}

router.get('/', function(req, res, next) {                                     
  convolutedRearrangementHack(res, req, next);
});