为什么JSLint会在使用尚未定义的函数时抱怨?关键是函数是被定义的 - 如果那个函数调用了那个函数,那个函数就存在了,事情就会起作用。jsLint错误:“在定义之前使用了somefunction()”
看看下面的代码:
function foo()
{
// calls bar()
};
function bar()
{
// calls foo()
};
有没有办法来组织这样一种方式,它将使JSLint的快乐2种方法。我该如何处理这个问题?
为什么JSLint会在使用尚未定义的函数时抱怨?关键是函数是被定义的 - 如果那个函数调用了那个函数,那个函数就存在了,事情就会起作用。jsLint错误:“在定义之前使用了somefunction()”
看看下面的代码:
function foo()
{
// calls bar()
};
function bar()
{
// calls foo()
};
有没有办法来组织这样一种方式,它将使JSLint的快乐2种方法。我该如何处理这个问题?
看到这个答案:
Contending with JS "used before defined" and Titanium Developer
基本上,如果你使用foo = function() { ... }
形式,你可以在上面声明var foo, bar;
避免JSLint的错误。
但是这与函数foo()有点不同,是函数表达式和全部。另外,由于提升,在顶部声明'var foo,bar'是多余的。所以,简而言之,'var foo = function()...,var bar = function()...'在技术上会做得很好。此外,我认为,考虑到函数声明是在其他任何东西之前加载的--JSLint应该已经修复了它们的东西。 – ZenMaster
@ ZenMaster:一个'jslint',['jsHint'](http://www.jshint.com/docs/)的分支,解决了这个问题,让你在选项中设置''latedef':false''。 (它不影响变量名称,只是函数名称。) –
这个答案将打破依赖函数定义提升的代码〜 –