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

问题描述 投票:23回答:3

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

看看下面的代码:

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

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

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

javascript jslint
3个回答
14
投票

看到这个答案:

Contending with JS "used before defined" and Titanium Developer

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


17
投票

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

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

看看here


0
投票

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

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

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

所以我在脚本之后放置了函数调用并且它解决了问题,所以基本的我现在看不到几天的答案,所以试一试

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

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

祝你好运,我希望这会有所帮助

© www.soinside.com 2019 - 2024. All rights reserved.