我使用JSLint对与外部ERP系统交互的大量脚本进行代码检查/清理。
我遇到的问题是JSLint抱怨API中的方法在定义之前就已经使用了。
如何在JSLint中引用库以便进行正确的查找?我有493个需要引用的函数,因此/*Global*/
不是一个选项。
如果无法做到这一点,有没有更好的方法呢?
我引用了this post,它要求类似的东西,但是答案需要对API进行重组,这是我无法做到的。
答案 0 :(得分:0)
图书馆是什么?通常,您希望库具有正确的命名空间,因此它不是问题,就像在jQuery的/*global $*/
中一样。如果lib是内部的,你可以编辑它,请考虑这样做(如果你想坚持严格的JSLint合规性)。
因此...
function myFunc1(param1) {
return param1 + "some string1";
}
function myFunc2(param2) {
return param2 + "some string2";
}
...变为
var fauxNamespace = {
myFunc1: function (param1) {
return param1 + "some string1";
},
myFunc2: function (param2) {
return param2 + "some string2";
}
};
然后你可以/*global fauxNamespace*/
并获利。我意识到这是非平凡的,但它是正确的事情(c)Crockford 2008。
否则你回到了正常的“使用JSHint。它更快乐,因为有更多的选项,”或“JSLint有very clean code。如果你愿意的话,你可以自己修改它来忽略那个错误”,各种各样的答案。
您正在寻找的目标是line 2459:
// If the master is not in scope, then we may have an undeclared variable.
// Check the predefined list. If it was predefined, create the global
// variable.
if (!master) {
writeable = predefined[name];
if (typeof writeable === 'boolean') {
global_scope[name] = master = {
dead: false,
function: global_funct,
kind: 'var',
string: name,
writeable: writeable
};
// But if the variable is not in scope, and is not predefined, and if we are not
// in the global scope, then we have an undefined variable error.
} else {
token.warn('used_before_a');
}
} else {
this.master = master;
}
图书馆是否公开?