Fork me on GitHub

JSLint Error Explanations

JSLint will hurt your feelings. It's time to make them better!


Move 'var' declarations to the top of the function

什么时候会产生这个错误?

JSLint在遇到一个变量声明在了for循环的初始化语句中。以下是一个简单的计数到10的for循环语句:

为什么会产生这个错误?

这个错误是为了强调一种可能的对语言的误解。如果你不解决这个问题,你的代码可能会和期望的一样正常工作,但是你可能误解了JavaScript是如何处理变量声明的。

所有的声明都会被提升到它们所出现的作用域的顶部。JavaScript中的变量只有函数作用域而没有块级作用域。在很多其他的语言中,变量i在上述例子中,是属于for循环体并且能够被其包含的作用域所访问到。在JavaScript中,变量实际上在所属的作用域中都能被访问到,尽管它在直到循环初始化执行的时候才被赋值。

为了解决这个问题,可以简单的将变量声明放到循环体外面。这可以让代码与其被解析的时候是一样的。

更多相关的信息可以查阅相关的消息"Combine this with the previous 'var' statement".


comments powered by Disqus