Node.js NodeJS未使用的变量
我的linter抱怨没有使用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'});
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);
});