因此,我正在使用JSLint尝试检测错误。我关闭了一些我不喜欢的选项,但是我看不到任何能够使用window
全局变量的方法。嗯,有Yahoo Widget选项,但这太过分了。
使用“窗口”有什么用,为什么JSLint会说这会导致错误?
因此,我正在使用JSLint尝试检测错误。我关闭了一些我不喜欢的选项,但是我看不到任何能够使用window
全局变量的方法。嗯,有Yahoo Widget选项,但这太过分了。
使用“窗口”有什么用,为什么JSLint会说这会导致错误?
Answers:
/*jslint browser: true*/
是对此的正确解决方案。从2017年7月7日起,您必须手动设置全局指令。从JSLint文档:
/ * global * /指令用于指定可用于此文件的一组全局变量(通常是函数和包含函数的对象)。在ES6模块出现之前,这通常在浏览器中用于将源文件链接在一起。强烈建议不要使用全局变量,但是不幸的是,Web浏览器需要使用它们。/ * global * /伪指令仅在选择“假设浏览器”选项时使用。
因此,您将需要使用:
/*jslint browser */
/*global window */
Some globals can be predefined for you. Select the Assume a browser (browser) option to predefine the standard global properties that are supplied by web browsers, such as document and addEventListener.
这也包括窗口。
像这样在脚本中添加评论:
/*global window */
... your script goes here
该注释将告诉JSLint在window
其他地方定义。
参见:http : //www.JSLint.com/lint.html,
JSLint还可以识别
/* global */
注释,该注释可以指示JSLint该文件中使用的变量是在其他文件中定义的。注释可以包含逗号分隔的名称列表。每个名称都可以选择后面跟一个冒号,并且可以为true或false,如果为true,则表示该文件可以将变量分配给它;如果为false,则表示不允许该赋值,这是默认设置。
如果您希望窗口默认为全局窗口,而不必在脚本中应用注释,则可以在本地文件功能predef:["window"]
内添加到对象常量参数。JSLINT
jslint.js
顺便说一句,我也使用predef:["$","window"]
jQuery全局。
更新:
这个答案早在2009年是正确的。到目前为止,您应该使用/*jslint browser: true*/
Matt Clarkson提供的解决方案。
browser: true
是。
/*
和之间不应有空格global
,否则JSLint显然会忽略该声明。
/*jslint browser: true*/
不再起作用。
我不得不在代码上使用以上两个答案,以摆脱所有警告:
/*jslint browser:true*/
/*global window*/
// eventBoiler v0.1.1 by @ryanpcmcquen
// https://github.com/ryanpcmcquen/eventBoiler
(function (win, doc) {
'use strict';
win.eventBoiler = function (selector, typeOfEvent, func) {
doc.querySelector(selector).addEventListener(typeOfEvent, func);
};
win.eventBoiler.all = function (selectors, typeOfEvent, func) {
Array.prototype.slice.call(doc.querySelectorAll(selectors)).map(function (i) {
i.addEventListener(typeOfEvent, func);
});
};
}(window, document));
所以对我来说,这是使用JSLint网站时的解决方案:
/*jslint browser:true*/
/*global window*/