如何使用 JSHint 禁用关于 'this' 和严格模式的警告?

How to disable warnings about 'this' and strict mode using JSHint?

我正在使用 AngularJS (v1.5) 编写一个网络应用程序,所以我有一些控制器,在这些控制器中我经常声明如下内容:

function myController($someDirectives, ...){
    var ctrl = this;
    // My code
}

问题是,当我对我的代码进行 JSHint 时,我收到了针对在控制器中声明的所有 'this' 的警告消息:

If a strict mode function is executed using function invocation, its 'this' value will be undefined.

我必须准确地说,在我的 .jshintrc 文件中,我设置了 "strict":false。 有谁知道如何特别禁用此消息?

提前致谢。

.jshintrc文件中设置配置

{
  "validthis": true // Tolerate using this in a non-constructor 
}

我遇到了同样的问题。我正在对有问题的函数执行“indirect invocation”,而不是 "function invocation",并且 'this' 在函数主体中被多次引用。

在我的例子中,我有太多这样的 "errors" 以至于 jsHint 在扫描我的整个脚本之前就退出了。

为了解决这个问题,我把它放在 script-file:

的顶部
/*jshint maxerr: 10000 */

它没有抑制错误,但至少它允许我向下滚动以查看 jsHint 对整个脚本的分析。

您始终可以在代码块中覆盖 jshint options,即

/* jshint validthis: true */

我遇到了同样的问题,环境非常相似 angular 1.5.5 总是收到相同的 lint 警告:

如果使用函数调用执行严格模式函数,其 'this' 值将是未定义的。

我更改了组件主要函数的名称,以大写字母开头,警告消失了

function MyController($someDirectives, ...){