Подтвердить что ты не робот

Jslint: почему этот код приводит к сообщению об ошибке "Строгое нарушение"?

Выполнение следующего простого кода приводит к "строгому нарушению". сообщение об ошибке. Я пытался найти документацию о том, почему и как ее исправить. Любой вход будет оценен.

Ошибка:

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

С уважением, Эгил.

4b9b3361

Ответ 1

Я посмотрел исходный код 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 в глобальном контексте.

Ответ 2

Чтобы развернуть на Roland Illig ответ:

В нестрогом режиме this привязан к глобальной области видимости, если он не связан ни с чем другим. В строгом режиме это undefined. Это делает его ошибкой использовать его вне метода.