2014-11-04 221 views
1

我最近开始使用JSLint,并且像许多我面对的“已定义之前使用”和“已经定义”。我在这里经历了一些解决方案,并且设法解决了一些问题,但现在我陷入了困境。我的代码是这样的:jslint clickHandler在它被定义之前被使用/已经定义

var foo; 
foo = addEventListener("click", clickHandler, false); 
... 
function clickHandler() {...}; 

这样的代码工作,但我得到了“使用之前定义”的警告。如果我将clickHandler添加到“var”中,那么在我调用它的时候,它将会是未定义的,迫使我对代码重新排序,并将处理程序的定义放在代码中间(在我看来,可读性较差)。有没有一种方法可以使用clickHandler,但在使用后还有其定义?

+0

好的,你的问题是什么? – 2014-11-04 23:07:46

+0

对不起,我以为我写过问题部分。修复。 – Tiagojdferreira 2014-11-05 10:19:53

+0

我想知道为什么jslint在这方面很勉强。函数foo()在* load *时间(即第一次)被解释,而'var foo = function()'在* run *时间(即后面的时间)被解释。除非您切换到'var foo = function()'样式声明,否则您的代码应该运行。 – amphetamachine 2014-11-05 16:03:59

回答

2

你怎么样调整你的代码

function clickHandler() {...}; 
var foo; 
foo = addEventListener("click", clickHandler, false); 
... 

有没有一种方法可以让我打电话使用clickHandler事件,但有它的定义,它被用来后?

当然,只是保持代码的样子。它会工作。 JSLint只是指出可能存在的问题或风格违规。并非所有抱怨的事实上都是一个问题。

如果您想要更柔韧的棉绒,请使用JSHint

+0

这会起作用,但会使我在文档的开头定义所有功能,而不是最终。作为一个风格问题,我真的更喜欢函数的定义,因为我发现它更易读(首先是主程序的逻辑,然后是细节)。 – Tiagojdferreira 2014-11-05 10:22:29

+0

然后你使用JSLint运气不佳。 ; ^)你必须做Felix在这里通过的东西。 – ruffin 2014-11-05 14:29:48

+0

@Tiagojdferreira:正如ruffin所说,那么不要使用JSLint。使用更加可配置的JSHint。 – 2014-11-05 15:58:37