jslint: почему этот код приводит к сообщению об ошибке «Строгое нарушение»? - PullRequest
14 голосов
/ 23 марта 2010

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

Ошибка:

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

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

Ответы [ 2 ]

17 голосов
/ 14 февраля 2012

Чтобы расширить ответ Ролана Иллига:

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

8 голосов
/ 24 июля 2010

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

...