JSLint(JavaScript验证网站)- 错误!暗示的全局变量:

4

我刚刚在JSLint上测试了我的自定义画廊脚本,除了一个问题之外,所有错误都已经解决了。

隐式全局变量错误.. 这真的是一个错误吗?我可以忽略它还是应该努力解决这个错误呢..?



谢谢您的回复!

alt text

Error:
Implied global:
<bunch of vars and other stuff i dont know>

这是什么意思?顺便说一下,我使用的是JQuery库..也许这就是问题所在^^..
3个回答

6

如果你像这个例子一样使用外部声明的变量,请在文件的顶部放置一个'global'语句,像这样:

/*global $, document */


2
JSLint文档中说:
未定义的变量和函数
JavaScript最大的问题是它依赖全局变量,特别是暗示的全局变量。如果一个变量没有被明确声明(通常使用var语句),那么JavaScript会假定该变量是全局的。这可能掩盖了拼写错误和其他问题。
JSLint希望在使用或调用变量和函数之前先声明所有变量和函数。这使得它能够检测到暗示的全局变量。这也是良好的实践,因为它使程序更易于阅读。
对此错误要小心。几乎所有的编码约定都不希望您使用暗示的全局变量。
变量可以使用var关键字声明。

@Mike:那么这是否意味着当你使用jQuery时无法消除这个错误? - fretje
是的。因为调试器不包含jquery core.js文件。 - Tomkay

1
在编写浏览器的 JavaScript 代码时,有必要向 JSLint 指示您处于浏览器模式,例如通过包含以下内容:
/*jslint browser: true */

这应该解决'document','setTimeout'和其他典型的浏览器默认值

由于jQuery可能没有在与您的JavaScript相同的上下文中评估,因此您需要通过以下方式让它知道非常有用的'$'可用:

/*global $ */

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接