JSLint — ошибки «var notdefined», вызванные внешними файлами скриптов

Я пытаюсь использовать JSLint для некоторых файлов javascript в наших проектах на работе и столкнулся с несколькими ошибками, такими как следующие:

JS Lint: '<var name>' is not defined

Проблема в том, что переменная определена в отдельном файле, на который ссылаются в другом месте. например HTML-страница имеет global.js и pageSpecific.js

Я знаю, что использую синтаксис

/* global varName */ 

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

Мне кажется, что либо есть решение JSLint, о котором я не знаю, либо, что более вероятно, оно указывает на проблему со структурой JS в этом проекте? Являются ли файлы «global.js» (такого рода) плохой практикой?

Идеи/отзывы приветствуются.


person glosrob    schedule 18.01.2012    source источник


Ответы (2)


Это указывает на проблему со структурой JS. Глобальные значения должны быть сведены к минимуму. Вещи, которые действительно должны быть глобально доступны, должны висеть на одном глобальном объекте (этот метод известен как Namespacing в мире JS).

person Quentin    schedule 18.01.2012
comment
В этом случае я исследую пространство имен и посмотрю, как мы можем применить его к нашему проекту здесь. Спасибо! - person glosrob; 18.01.2012

Вы также можете передать список глобальных переменных в команду, которую используете для вызова JSLint/JSHint, хотя большая проблема заключается в том, что у вас не должно быть так много переменных, загрязняющих глобальную область видимости.

person robrich    schedule 04.05.2012