问题
I have just started using JSHint (through the Sublime-Linter package for Sublime Text 2). I would like to suppress its warnings regarding functions that are used before they are defined, as I see no problem with using function definitions like this. For example, the following code generates warnings:
(function($){
$(document).ready(function()
{
formValidationSetup();
refreshErrorMessages();
});
function formValidationSetup()
{
}
function refreshErrorMessages()
{
}
})(jQuery);
The warnings:
- formValidationSetup is defined but never used
- refreshErrorMessages is defined but never used
I've tried setting undef to false in the JSHint options, but I'm still getting these errors. Is there another option I should be setting? Form the JSLint docs for undef:
true if variables and functions need not be declared before used. This is not available in strict mode.
回答1:
To avoid the warning
defined but never used
in jslint in your javascript add comments like:
/*exported formValidationSetup, refreshErrorMessages */
In jshint and jslint you can set the unused option to false:
/*jshint unused:false*/
See Options
回答2:
I had this problem with should
and expect
in Chai tests. I ended up with this pattern:
'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:
You can simply use
"unused": false,
in your .jshintrc
回答4:
A better way not touching the Gruntfile.js
in a typical Yoeman setup is to edit the .jshintrc
file (a hidden file in Unix system). And update the content as the following:
{
"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
}
set the "unused"
to false
.
回答5:
Interestingly, adding 'use strict';
inside the IIFE suppresses the error. Not sure why though.
回答6:
You'll want to use the 'latedef' option
来源:https://stackoverflow.com/questions/12607289/prevent-jshint-warning-that-functionname-is-defined-but-never-used