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));
С уважением, Эгил.
Ответы
Ответ 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. Это делает его ошибкой использовать его вне метода.