【问题标题】:Why is JSLint complaining about my JavaScript?为什么 JSLint 抱怨我的 JavaScript?
【发布时间】:2011-04-15 01:29:11
【问题描述】:
{
   out = rogueArray[13];
   for (var arrayItem in vanWilder) 
   {

这是我在 JSLint 上被告知的内容:

Error:

Problem at line 52 character 18: Move 'var' declarations to the top of the function.

for (var arrayItem in vanWilder)

Problem at line 52 character 18: Stopping. (30% scanned).

Implied global: requestOne 19,22,25,27, XMLHttpRequest 19, document 29, out 51

Unused variable: evilVariable 25 "onreadystatechange", redBull 25 "onreadystatechange", wildGoose 25 "onreadystatechange", monkeyWrench 25 "onreadystatechange"

我将如何解决这个问题? 如果不是第二个错误,至少是第一个!

【问题讨论】:

  • 我相信您只需将变量定义 var arrayItem 放在当前范围的顶部?

标签: javascript jslint


【解决方案1】:

第 52 行字符 18 处的问题:将 'var' 声明移到函数顶部。

由于 JavaScript 没有块作用域,并且变量定义被提升,Crockford 建议您将所有变量定义放在作用域的顶部。

隐含全局:requestOne 19,22,25,27, XMLHttpRequest 19, document 29, out 51

因为out 左侧没有var 关键字,所以它将附加到window,本质上使其成为一个全局变量。

未使用的变量:evilVariable 25“onreadystatechange”、redBull 25“onreadystatechange”、wildGoose 25“onreadystatechange”、monkeyWrench 25“onreadystatechange”

你一定是在某处定义了一个变量evilVariable,但没有使用它。


请记住,Douglas Crockford 是个聪明人,他的 JavaScript 书非常出色,但请把他的话和 JSLint 当作一个人的建议,而不是福音。 :)

【讨论】:

  • 那么我到底应该把 var 放在哪里?
  • @Amanda 你应该像这样定义你的变量:var scopedVariable = 'Hello';
猜你喜欢
  • 2012-05-15
  • 2011-05-11
  • 1970-01-01
  • 2021-06-11
  • 2011-04-28
  • 1970-01-01
  • 2014-01-14
  • 2011-12-31
  • 2015-06-09
相关资源
最近更新 更多