Howto:在JSLint中引用库

时间:2014-04-01 19:38:27

标签: javascript jslint

我使用JSLint对与外部ERP系统交互的大量脚本进行代码检查/清理。

我遇到的问题是JSLint抱怨API中的方法在定义之前就已经使用了。

如何在JSLint中引用库以便进行正确的查找?我有493个需要引用的函数,因此/*Global*/不是一个选项。

如果无法做到这一点,有没有更好的方法呢?

我引用了this post,它要求类似的东西,但是答案需要对API进行重组,这是我无法做到的。

1 个答案:

答案 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;
        }

图书馆是否公开?