JSLint将'window'作为全局变量的问题

Bjo*_*orn 75 javascript jslint

所以我正在使用JSLint来尝试检测错误.我关闭了一些我不喜欢的选项,但是我没有看到任何能够使用window全局变量的方法.好吧,有Yahoo Widget选项,但这太过分了.

使用'window'有什么用处,为什么JSLint会说这会导致错误?

Mat*_*son 135

/*jslint browser: true*/
Run Code Online (Sandbox Code Playgroud)

对此是正确的解决方案.自2017-07-07起,您必须手动设置全局指令.从JSLint文档:

/*global*/指令用于指定一组可用于此文件的全局变量(通常是包含函数的函数和对象).这在浏览器中常用于在ES6模块出现之前将源文件链接在一起.强烈建议不要使用全局变量,但遗憾的是Web浏览器需要使用它们.只有在选择"假定浏览器"选项时才能使用/*global*/指令.

所以你需要使用:

/*jslint browser */
/*global window */
Run Code Online (Sandbox Code Playgroud)


bjo*_*ben 76

只需在脚本中发表评论即可:

/*global window */

... your script goes here
Run Code Online (Sandbox Code Playgroud)

此注释将告诉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`是. (5认同)
  • 请注意,“/*”和“global”之间不应有空格,否则 JSLint 显然会忽略该声明。 (2认同)