jsLint错误:“somefunction()在定义之前使用”

时间:2011-09-15 02:17:22

标签: javascript jslint

为什么JSLint会抱怨某些东西是否使用了尚未定义的函数?关键是该函数已定义 - 如果该函数调用该函数,则该函数存在并且事情将起作用。

看看下面的代码:

function foo()
{
   // calls bar()
};

function bar()
{
   // calls foo()
};

没有办法以这样的方式组织这两种方法,这样可以使JSLint满意。我该如何处理这个问题?

3 个答案:

答案 0 :(得分:16)

据我所知,JSLint无法解决这个问题,但基于JSLint的JSHint以适当的方式解决了这个问题。

只需使用“latedef”属性并将其设置为“false”即可。如果你想要检测这些有问题的变量定义,但想要使用函数表达式并允许提升这些函数,你可以设置“latedef”:“nofunc”。

查看here

答案 1 :(得分:14)

看到这个答案:

Contending with JS "used before defined" and Titanium Developer

基本上,如果您使用foo = function() { ... }表单,则可以在顶部声明var foo, bar;以避免JSLint错误。

答案 2 :(得分:0)

我刚刚处理了一个与此非常相似的问题,问题是我的脚本在函数调用之后就已经存在了,

$('#choice').change(function() {
    var value = $(this).val().toLowerCase();
    $("#dt-answer tr").filter(function() {
        $(this).toggle($(this).text().toLowerCase().indexOf(value) > -1)
    });
})    

所以我将函数调用放在脚本之后,它解决了这个问题,所以基本来说,我现在几天都看不到答案了,所以尝试一下

function zzzzz () {
   aaaaa();
   ccccc();
  }

function aaaaa() {
 blah = bla blah blah;
 }
function bbbbb() {
 blah = bla blah blah;
 }
function ccccc() {
 blah = bla blah blah;
 }

好运,希望对您有帮助