如何告诉JSHint忽略一个文件中的所有未定义变量?

时间:2013-06-28 07:13:34

标签: javascript jshint

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

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

4 个答案:

答案 0 :(得分:68)

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

/*globals globalFunction, anotherGlobal, oneMore */

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

或者,如果您确实要忽略该文件中的所有“未定义”警告,并且您使用的是JSHint 1.0.0或更高版本,则可以直接关闭该特定警告:< / p>

/*jshint -W117 */

答案 1 :(得分:7)

今天下午使用jshint来解决这个问题。 以下修复对我有用。 而不是使用“全局”,尝试使用“predef”。 例如:

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

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

  "predef" : ["describe", "expect", "it", "inject", "beforeEach", "angular"]
}

答案 2 :(得分:7)

只需在.jshintrc文件中添加此规则即可。

"-W117": true

这将忽略所有警告,即“*未定义。”

答案 3 :(得分:6)

我发现自己使用jshint ignore:line作为解决此需求的方法:

  

var unusedVar; // jshint ignore:line

这允许jshint继续对这个条件进行有用的检查,但是如果有明确的理由忽略特定声明而不是添加这两个声明,则两者都解决问题,并以一种对查看代码的任何人都很明显的方式进行。

一个很好的例子(至少对我而言)是使用ES6的解构来违反一组你可能或不会一直使用的快捷方式。在Ember中,我经常使用许多悬挂它的方法,例如typeOfcomputed。而不是总是引用Ember.computed而只是引用computed并且在我所有的Ember对象的顶部都有类似下面的东西,这样更好:

 const { computed, $, A, run, on, typeOf, debug, get, set } = Ember;    // jshint ignore:line