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

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

+14
источник поделиться
2 ответа

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

+8
источник

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

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

+17
источник

Посмотрите другие вопросы по меткам или Задайте вопрос