如何使用Jslint纠正“在定义之前使用文档”

时间:2012-05-26 12:27:59

标签: jslint

我在 jsLint 中收到以下错误:

  

'document'在定义之前就已使用过。

导致错误的行:

document.cookie = name + "=" + value + expires + "; path=/";

我知道为什么会这样,但我希望我的代码符合要求。

如何解决此问题?

感谢。

5 个答案:

答案 0 :(得分:47)

放置

/*jslint browser:true */

在你的函数体的开头。或者,您也可以使用

/*global document: false */

JSLint用于检查任何javascript代码,并且document全局对象在任何地方都不存在,因此您必须手动告诉JSLint您的代码旨在在浏览器中执行,因此{{1全局变量已定义。例如,对于服务器端javascript,JSLint应该报告此错误。

答案 1 :(得分:2)

从jslint的网站上,您可以阅读一个/ 全局 /指令,它允许您设置假定在其他地方声明的变量。

这是一个例子(把它放在文件的顶部):

/\*global var1,var2,var3,var4,var5\*/

或者,在starjava的情况下:

/\*global document\*/

我不确定是否需要:true:false,但看起来我建议从网站上阅读。 http://www.jslint.com/lint.html

确保初始全局声明与'/\*'位于同一行,否则会中断。

答案 2 :(得分:0)

如果您正在使用节点,可以添加以下行

/ * node JSLint: true * /

在脚本的开头 http://jslinterrors.com/a-was-used-before-it-was-defined/

答案 3 :(得分:0)

如果您的所有JS代码都应该从浏览器运行,那么只需添加--browser标志。

jslint --browser my.js

答案 4 :(得分:0)

在cli模式下,您可以使用配置文件:
jslint.conf

{
    "predef": [
        "module",
        "require",
        "window",
        "document",
        "jQuery",
        "Backbone",
        "Marionette",
        "Modernizr",
        "_",
        "setTimeout",
        "clearTimeout",
        "setInterval",
        "clearInterval"
    ],
    "evil":false,
    "indent":4,
    "vars":true,
    "passfail":false,
    "plusplus":false
}

并使用带有--config jslint.conf参数的jslint。