Как исправить "Документ использовался до его определения" с использованием Jslint
Я получаю следующую ошибку в jsLint:
'document' использовался до того, как он был определен.
Линия, вызывающая ошибку:
document.cookie = name + "=" + value + expires + "; path=/";
Я понимаю, почему это происходит, но я хотел бы, чтобы мой код был совместимым.
Как это разрешить?
Спасибо.
Ответы
Ответ 1
Место
/*jslint browser:true */
в начале тела вашей функции. Или, альтернативно, вы можете использовать
/*global document: false */
JSLint предназначен для проверки любого javascript-кода, а глобальный объект document
не существует повсюду, поэтому вам нужно вручную сообщить JSLint, что ваш код предназначен для запуска в браузере и, следовательно, document
глобальная переменная определено. Например, для серверного javascript ожидается, что JSLint сообщит об этой ошибке.
Ответ 2
На веб-сайте jslint вы можете прочитать о/глобальной/директиве, которая позволяет вам устанавливать переменные, которые предполагается объявить в другом месте.
Вот пример (поместите это в начало файла):
/\*global var1,var2,var3,var4,var5\*/
или, в случае с starjava:
/\*global document\*/
На самом деле я не уверен, нужны ли :true
или :false
, но это похоже на то, что я читал на сайте. http://www.jslint.com/lint.html
Убедитесь, что исходный глобальный оператор находится в той же строке, что и '/\*'
, иначе он сломается.
Ответ 3
если вы используете node, можете добавить следующую строку
/ * node JSLint: true * /
в начале script
http://jslinterrors.com/a-was-used-before-it-was-defined/
Ответ 4
Если весь ваш JS-код должен быть запущен из браузера, тогда просто добавьте флаг --browser
.
jslint --browser my.js
Ответ 5
В режиме cli вы можете использовать конфигурационный файл:
jslint.conf
{
"predef": [
"module",
"require",
"window",
"document",
"jQuery",
"Backbone",
"Marionette",
"Modernizr",
"_",
"setTimeout",
"clearTimeout",
"setInterval",
"clearInterval"
],
"evil":false,
"indent":4,
"vars":true,
"passfail":false,
"plusplus":false
}
И используйте jslint с параметром --config jslint.conf
.