开发者

jslint: why does this code result in a "Strict violation" error message?

Running the following simple code results in a "Strict violation." error message. I have been trying to find documentation on why, and how to fix it. Any input will be much appreciated.

The error:

开发者_运维百科
Error:

Problem at line 6 character 4: Strict violation.

} (this));

The sample code:

/*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));

Regards, Egil.


To expand on Roland Illig's answer:

In non-strict mode, this is bound to the global scope when it isn't bound to anything else. In strict mode it is undefined. That makes it an error to use it outside of a method.


I had a look at the source code of jslint, which says:

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;
    });
}

I guess that jslint really complains that you are using this in a global context.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜