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

Sta*_*bie 23 javascript jslint

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

看看下面的代码:

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

function bar()
{
   // calls foo()
};
Run Code Online (Sandbox Code Playgroud)

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

eri*_*urg 17

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

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

检查它在这里.


MrT*_*ick 14

看到这个答案:

与JS"使用前定义"和Titanium Developer竞争

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

  • @ZenMaster:`jslint`,[`jsHint`](http://www.jshint.com/docs/)的一个分支解决了这个问题,让你在选项中设置``latedef":false`.(它不会影响变量名,只影响函数名.) (9认同)
  • 但这与`function foo()`有点不同,是函数表达式和所有.另外,由于吊装,在顶部声明`var foo,bar`是多余的.所以,简而言之,`var foo = function()...,var bar = function()...`在技术上会做得很好.另外,我认为,考虑到函数声明是在其他任何东西之前加载的 - JSLint应该已经修复了它们的东西. (6认同)