为什么JSLint会对此函数给出严格的违规错误?

Eri*_*edt 7 javascript error-handling jslint use-strict webstorm

JSLint给出了"严格违规"错误,尽管我在一个隐藏全局范围的函数中使用了"this"上下文.

function test() {
    "use strict";
    this.a = "b";
}
Run Code Online (Sandbox Code Playgroud)

为了记录,我在Webstorm中使用内置的JSLint解析器.

Eri*_*edt 10

这是因为JSLint无法将您的函数识别为构造函数.按照惯例,您必须使用大写字母.

function Test() {
    "use strict";
    this.a = "b";
}
Run Code Online (Sandbox Code Playgroud)

  • 您可以查看http://jshint.com.它提供了更多的控制,而不是将你锁定在由Crockford的意见而不是规范控制的选项中.你遇到的问题也发生在非构造函数中,如果你要声明函数,你将把它作为方法放在一个对象上.(例如,如果你的`function test(){...}`之后你有`obj.test = test;`所以你最终在`test`属性上找到了一个具有正确名称的函数,但没有使用命名函数表达式,因为IE与它们有问题.) (4认同)