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

Javascript jsLint错误:“;somefunction()在定义之前已被使用”;,javascript,jslint,Javascript,Jslint,如果某些东西使用了一个尚未定义的函数,为什么JSLint会抱怨呢?关键是这个函数是定义好的——如果有东西调用了这个函数,那么这个函数就存在了,事情就可以正常工作了 请看下面的代码: function foo() { // calls bar() }; function bar() { // calls foo() }; 没有办法组织这两个方法,使JSLint高兴。如何处理此问题?请参阅以下答案: 基本上,如果您使用foo=function(){…}表单,您可以声明var foo

如果某些东西使用了一个尚未定义的函数,为什么JSLint会抱怨呢?关键是这个函数是定义好的——如果有东西调用了这个函数,那么这个函数就存在了,事情就可以正常工作了

请看下面的代码:

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

function bar()
{
   // calls foo()
};
没有办法组织这两个方法,使JSLint高兴。如何处理此问题?

请参阅以下答案:


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

据我所知,JSLint无法处理此问题,但基于JSLint的JSHint以适当的方式解决了此问题

只需使用“latedef”属性并将其设置为“false”。如果您仍然希望检测此类有问题的变量定义,但确实希望使用函数表达式并允许提升这些函数,则可以设置“latedef”:“nofunc”


检查一下。

我刚刚处理了一个与此非常类似的问题,问题是我的脚本在函数调用之后就准备好了

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();
  }

祝你好运,我希望这对你有所帮助,但这与函数foo()有一点不同,就是函数表达式和所有东西。另外,由于吊装,在顶部声明
var foo,bar
是多余的。因此,简而言之,
var foo=function()…,var bar=function()…
在技术上可以做得很好。此外,我认为,考虑到函数声明是先加载的,JSLint应该已经修复了它们的东西。@ZenMaster:JSLint的分支
JSLint
,解决了这个问题,让您在选项中设置
“latedef”:false
。(它不影响变量名,只影响函数名。)此答案将打破依赖函数定义的代码。请注意,“latedef”选项的“nofunc”值有助于避免检查函数声明(而不是表达式)。