JSLint терпит неудачу файл из-за неопределенной переменной - PullRequest
1 голос
/ 06 мая 2011

Я только что начал помещать JSLint в свой конвейер сборки, и это было здорово. Хотя он указал на что-то в большинстве моих файлов, это не является ошибкой как таковой, хотя он будет видеть это как единое целое. Я изменил свой конструктор, чтобы теперь взять экземпляр этого объекта, чтобы тесты прошли, однако я не уверен, действительно ли мне это нужно, как и во всех других основных языках, мне не нужно было бы это делать.

Мне нужно добавить к этому больше контекста, чтобы он имел какой-то смысл, так что вот так.

У меня есть самая близкая вещь, которую я могу получить к Enum в javascript, который в основном представляет собой глобальную переменную стиля JSON с множеством констант, она используется для описания типов событий, а не для каждого класса, который хочет вызвать / прослушать события должны иметь жестко закодированные строки, он может просто использовать константу из этой переменной enum . Как я только что упомянул, у меня есть эти классы, которые используют это статическое перечисление , но они просто используют глобальную версию этой переменной, а не локальный экземпляр, переданный через конструктор, и именно здесь мои проблемы начать, как и в реальном приложении, я точно знаю, что файл enum будет включен, что сделает его доступным для всех. Однако JSLint не имеет контекста этого, поэтому он видит только отдельный файл, не беспокоясь о внешних зависимостях, так как считает, что они плохие, что на любом другом языке было бы правдой, но в JS вы не можете достичь того же, не имея глобального переменные (насколько мне известно).

Как я уже говорил, я добавил это перечисление в конструктор, чтобы позволить JSLint передавать файлы, однако он чувствует себя немного неправильно, передавая его, но, возможно, это потому, что я думаю об этом как о обычном разработчике и не разработчик javascript ...

Теперь я должен придерживаться этого, и пропустить его через конструктор, и просто смоделировать это в моих тестах, или я должен принять подход, что он должен всегда быть там?

Я уверен, что это будет зависеть от личных мнений людей, но было бы неплохо знать, являюсь ли я идиотом, и должен ли я просто хранить каждый файл как свой собственный бункер, или если у меня есть способ получить мое испечь и съесть.

Ответы [ 2 ]

7 голосов
/ 09 мая 2011

Я обнаружил, что JSLint поддерживает комментарий для глобальных переменных:

/*globals myGlobal*/

Я решил просто использовать свой enum как глобальный и заняться более важными вещами.

0 голосов
/ 14 июня 2011

JavascriptLint значительно улучшает JSLint в этом отношении, так как позволяет вам определять межфайловые зависимости:

Если скрипт ссылается на переменную, функцию или объект из другого скрипта, вам необходимо добавить комментарий / * jsl: import PathToOtherScript * / в ваш скрипт. Это говорит JavaScript Lint проверять элементы, объявленные в другом скрипте. Относительные пути разрешаются на основе пути текущего сценария.

См .: http://javascriptlint.com/docs/index.htm

...