你应该检查
globals
选项。
如果有大量无法手动管理的全局变量,最好的方法是将它们命名空间化或自动化JSHint配置的编写。
命名空间化类似于具有静态方法的类,您可以将相关全局变量作为单个对象上的引用进行分组。我认为,在现代编译器中,当解析所述对象上的关联引用时,您应该期望看到一些性能改进。
var gardening = (function () {
var exports = {};
exports.water = function () {};
function till () {};
exports.till = till;
return exports;
})();
var debug = {
prettyPrint: function (obj) {}
inspect: function () {}
};
与其将数十个肩并肩的全局变量堆在一起,不如提取几个对象来分组引用。创建这样的层次结构支持大脑构建树状解决方案的能力,以解决相关的函数目的。
动态编写JSHint配置
如果您已经为项目实施了一些任务运行程序(您很可能已经这样做了),那么添加一些自定义任务以从源文件聚合全局变量时,当这些变量可以计算并且无法通过手动方法合理管理时,这不会有害。
#!/usr/bin/env node
var fs = require('fs');
var jsHintOptions = {
maxerr: 10,
bitwise: true,
globals: {
foo: true,
bar: false
}
}
var cmd = process.argv[2];
if (cmd === 'author-jshintrc') authorJsHintRc();
function authorJsHintRc() {
var globals = [];
var reMatchGlobal = /^\s+function\s([\w\d_]+)/gm;
var extractGlobals = function (name) {
var contents = fs.readFileSync(name).toString();
var matches = contents.match(reMatchGlobal);
globals.push.apply(globals, matches);
}
var registerGlobal = function (global) {
jsHintOptions.globals[global] = false;
}
[
'path/to/foo.js',
'path/to/bar.js'
].forEach(extractGlobals);
globals.forEach(registerGlobal);
fs.writeFileSync('.jshintrc', JSON.stringify(jsHintOptions));
}
理想情况下,将
.jshintrc
文件放置或扩展到您的项目根目录中,应该意味着 Eclipse JSHint 插件会自动检查这些选项,从而使项目 JSHint 错误立即消失。
myFunction()
还是MaNameSpace.myFunction()
?你应该选择后者。 - Mörre