27

我在jsLint中收到以下错误:

在定义之前使用了“文档”。

导致错误的行:

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

我明白为什么会发生这种情况,但我希望我的代码符合要求。

我该如何解决这个问题?

谢谢。

4

5 回答 5

50

地方

/*jslint browser:true */

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

/*global document: false */

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

于 2012-05-27T07:57:56.420 回答
2

从 jslint 的网站,您可以了解 / global / 指令,该指令允许您设置假定在其他地方声明的变量。

这是一个示例(将其放在文件顶部):

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

或者,在starjava的情况下:

/\*global document\*/

我实际上不确定是否需要:trueor :false,但看起来它是从我在网站上阅读的内容中推荐的。http://www.jslint.com/lint.html

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

于 2012-07-18T14:57:53.903 回答
1

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

jslint --browser my.js
于 2016-07-29T10:30:52.137 回答
0

如果您使用的是节点可以添加以下行

/ * node JSLint: true * /

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

于 2013-01-24T03:00:15.937 回答
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。

于 2017-11-16T11:24:53.567 回答