14

运行以下简单代码会导致“严格违规”。错误信息。我一直在尝试查找有关原因以及如何解决它的文档。任何输入将不胜感激。

错误:

Error:

Problem at line 6 character 4: Strict violation.

} (this));

示例代码:

/*jslint browser: true, onevar: true, undef: true, nomen: true, eqeqeq: true, plusplus: true, bitwise: true, regexp: true, strict: true, newcap: true, immed: true */

"use strict";

(function (window) {
} (this));

问候,埃吉尔。

4

2 回答 2

17

扩展 Roland Illig 的答案:

在非严格模式下,this当它没有绑定到其他任何东西时,它会绑定到全局范围。在严格模式下,它是未定义的。这使得在方法之外使用它是错误的。

于 2012-02-14T07:52:00.163 回答
8

我看了一下 jslint 的源代码,上面写着:

function reservevar(s, v) {
    return reserve(s, function () {
        if (this.id === 'this' || this.id === 'arguments' ||
                this.id === 'eval') {
            if (strict_mode && funct['(global)']) {
                warning("Strict violation.", this);
            } else if (option.safe) {
                warning("ADsafe violation.", this);
            }
        }
        return this;
    });
}

我猜 jslint 真的抱怨你this在全球范围内使用。

于 2010-07-24T08:09:04.077 回答