JSLint полезен для выявления распространенных ошибок в JavaScript и особенно полезен для менее опытных разработчиков JavaScript. Некоторые из них звук, в значительной степени неоспоримо хороший совет. Тем не менее, некоторые из них представляют только взгляды своего автора, некоторые из которых являются весьма субъективными. Вот мои взгляды на приведенные вами примеры:
Проблема в строке 5, символ 23: использовать буквенное обозначение массива []
Полезный совет. Литералы массива короче, безопаснее и менее неоднозначны, чем при использовании конструктора Array
.
Проблема в строке 22: «focustextareas» использовался до того, как он был определен
Полезный совет. JavaScript имеет и объявления функций и выражения функций , которые ведут себя по-разному в том смысле, что функции, созданные объявлениями функций, доступны во всей области видимости в которые они определены, в то время как те, которые созданы функциональными выражениями, нет. Итак, следующие работы:
foo();
function foo() {}
... тогда как следующее не так:
foo(); // TypeError
var foo = function() {};
Проблема здесь в том, что если вы реорганизовали объявление функции в выражение функции, ваш код перестал бы работать, если бы эта функция использовалась до ее объявления.
Проблема в строке 125: ожидаемый '===' и вместо этого увидел '=='
иначе if (elem.className == "optionsDivVisible")
Сомнительный. Не нужно менять. То, что пытается вас предупредить, это то, что ==
выполняет принуждение к типу (правила которого приводят к некоторым неинтуитивным результатам), тогда как ===
- нет. Тем не менее, в этом случае оба операнда гарантированно являются строками (если elem
действительно является элементом DOM), и в этом случае ===
и ==
определены для выполнения точно таких же шагов, и нет никакого преимущества для используя один над другим.
Проблема в строке 133: ожидалось условное выражение и вместо этого было выполнено присваивание
while (elem = document.getElementById ("optionsDiv" + g))
Хороший совет, но менять не нужно. Я считаю эту конструкцию удобной и действительно ее использую, но она выделяет потенциальный источник ошибок: если вместо * * был задан ==
или ===
1063 * тогда это не выдаст ошибку и приведет к ошибкам, которые трудно диагностировать.
Проблема в строке 136, символ 13: Ожидается '{', и вместо этого он видит 'return'
возврат г;
Неуверенный . Требуется больше кода.