防止 JSHint 警告“功能名称已定义但从未使用”
Posted
技术标签:
【中文标题】防止 JSHint 警告“功能名称已定义但从未使用”【英文标题】:Prevent JSHint warning that 'functionName is defined but never used' 【发布时间】:2012-09-18 09:46:22 【问题描述】:我刚刚开始使用 JSHint(通过用于 Sublime Text 2 的 Sublime-Linter 包)。我想禁止它对在定义之前使用的函数的警告,因为我认为使用这样的函数定义没有问题。例如,以下代码会生成警告:
(function($)
$(document).ready(function()
formValidationSetup();
refreshErrorMessages();
);
function formValidationSetup()
function refreshErrorMessages()
)(jQuery);
警告:
formValidationSetup 已定义但从未使用过 refreshErrorMessages 已定义但从未使用过
我尝试在 JSHint 选项中将 undef 设置为 false,但我仍然收到这些错误。我应该设置另一个选项吗?为 undef 形成JSLint docs:
如果变量和函数在使用前不需要声明,则为真。这 在严格模式下不可用。
【问题讨论】:
您应该以此为提示在事件之前定义函数。这在技术上并不重要,但这样更容易理解代码。 当然,这只是一个偏好问题。我发现这样更容易理解,因为代码更少。 如果只是将函数定义移到顶部怎么会有更多代码? 对不起。误会你了。你说得对。相同数量的代码。对我来说,首先使用初始化程序更合乎逻辑。 【参考方案1】:为了避免警告
定义但从未使用过
在您的 javascript 中的 jslint 中添加 cmets,例如:
/*exported formValidationSetup, refreshErrorMessages */
在 jshint 和 jslint 中,你可以将未使用的选项设置为 false:
/*jshint unused:false*/
见Options
【讨论】:
所有其他未使用的变量呢?unused:false
据我了解,它会忽略 all 未使用的行为。我认为这不是我们想要实现的目标。
// jshint ignore:line
将忽略这一行。
未使用在 jslint 中无效【参考方案2】:
我在 Chai 测试中遇到了 should
和 expect
的问题。我最终得到了这种模式:
'use strict';
var request = require('supertest');
var should = require('chai').should(); // jshint ignore:line
var expect = require('chai').expect; // jshint ignore:line
process.env.NODE_ENV = 'test';
var appPromise = require('./index');
describe('GET /r_u_up', function()
it('respond with 204', function(done)
appPromise.then(function(app)
request(app)
.get('/r_u_up')
.expect(204, done);
);
);
);
【讨论】:
优秀的答案。谢谢。【参考方案3】:你可以简单地使用
"unused": false,
在你的 .jshintrc 中
【讨论】:
【参考方案4】:有趣的是,在 IIFE 中添加 'use strict';
可以抑制错误。不知道为什么。
【讨论】:
【参考方案5】:在典型的 Yoeman 设置中不接触 Gruntfile.js
的更好方法是编辑 .jshintrc
文件(Unix 系统中的隐藏文件)。并更新内容如下:
"curly": true,
"eqeqeq": true,
"immed": true,
"latedef": true,
"newcap": true,
"noarg": true,
"sub": true,
"undef": true,
"unused": false, // the change is here
"boss": true,
"eqnull": true,
"node": true
将"unused"
设置为false
。
【讨论】:
欢迎来到 Stack Overflow。考虑使用缩进代码块或预格式化文本格式化答案中的代码元素:***.com/editing-help#code【参考方案6】:你会想要使用 'latedef' 选项
【讨论】:
以上是关于防止 JSHint 警告“功能名称已定义但从未使用”的主要内容,如果未能解决你的问题,请参考以下文章
我的 vim 中的 JSHint 将 'yield' 标记为警告。