37

在 Karma 测试中,有很多 JSHint 抱怨的全局变量和函数(它已集成到我的编辑器中)。

我如何告诉 JSHint 忽略这个特定文件中的所有未定义变量?我希望/* jshint undef: false */关闭这些警告,但事实并非如此。

4

4 回答 4

71

告诉 JSHint 关于全局变量的正确方法是使用globals指令。例如:

/*globals globalFunction, anotherGlobal, oneMore */

当 JSHint 遇到任何列出的标识符时,这将防止“{a} 未定义”警告。

或者,如果您真的想忽略该文件中的所有“未定义”警告,并且您使用的是 JSHint 1.0.0 或更高版本,则可以简单地关闭该特定警告:

/*jshint -W117 */
于 2013-06-28T07:27:05.397 回答
9

只需将此规则添加到您的 .jshintrc 文件中即可。

"-W117": true

这将忽略所有说“*未定义”的警告。

于 2016-02-19T11:41:58.850 回答
8

今天下午使用 jshint 遇到了这个问题。以下修复对我有用。尝试使用“predef”,而不是使用“globals”。例如:

{
  /*
   * RELAXING OPTIONS
   * =================
   */

  // Suppress warnings about == null comparisons.
  "eqnull": true,

  "predef" : ["describe", "expect", "it", "inject", "beforeEach", "angular"]
}
于 2015-07-21T21:19:37.503 回答
7

我发现自己使用jshint ignore:line作为解决这种需求的一种方式:

变量未使用变量;// jshint 忽略:行

这允许 jshint 继续对这种情况进行有用的检查,但是如果有明确的理由忽略特定声明而不是添加它,这既解决了问题,又以任何查看代码的人都立即显而易见的方式来解决问题。

一个很好的例子(至少对我来说)是当使用 ES6 的解构来非法使用一组你可能会或可能不会一直使用的快捷方式时。在 Ember 中,我经常使用许多与其相关的方法,例如typeOfcomputed. 与其总是引用它,不如在我的所有 Ember 对象的顶部Ember.computed引用并具有类似以下内容的内容要好得多:computed

 const { computed, $, A, run, on, typeOf, debug, get, set } = Ember;    // jshint ignore:line
于 2015-07-24T10:39:07.947 回答