Мой опыт с JSLint в редакторе Brackets [как поднять качество кода с use strict и jslint]

На сегодняшней лекции мы говорили что было бы неплохо переписать код с использованием `use strict’. Хотелось бы собрать более-менее полный мануал по строгому режиму. Если вы знаете то, что не знаю я - предлагайте свои правки.

Использование строгого режима в редакторе

Строгий режим есть из коробки в brackets. Может быть, вам придётся что-то доустановить или донастроить, для меня факт наличия этого инструмента оказался приятной неожиданностью. Чтобы использовать прелести строгого режима, вам нужно просто сохранить файл в *.js, в моём случае проверка кода происходит автоматически при каждом сохранении.

Использование строгого режима в коде

Режим активируется директивой "use strict"; (или 'use strict';), помещённое отдельной строчкой в начале каждой функции. “Нестрогие” функции могут работать со строгими, насчёт обратного не уверен.

Почему нужно юзать строгий режим

Для меня строгий режим оказался замечательным решением, что делать с пробельными символами, то есть в каком code-style писать. Раньше я мог писать вот так: a=1, вот так: a = 1 или даже вот так: a= 1. Теперь же у меня есть чудесное решение этой проблемы. Так же, я могу видеть недостижимые ветвления, всякие странные условия, незакрытые скобки и проблемы с форматированием. Если есть портянка кода, проходящая JSLint, начинаешь относиться к ней как к серьёзному документу, здесь каждый символ находится на строго определённом месте, в этом коде решены многие типичные проблемы JavaScript кода.

Накопленные решения

Переменные

объявляются только так и только наверху функции, сразу после директивы строгого режима: var a, b, c, answer = 42;

Доступ к свойствам

Оператор in запрещён:

if (key in object) {
    val = object[key];
    res[key] = val;
} // Unexpected 'in'. Compare with undefined, or use the hasOwnProperty method instead.

Вот как следует переписать этот код:

if (object.hasOwnProperty(key)) {
    val = object[key];
    res[key] = val;
}

console.log()

console.log(something); // console was used before it was defined
Чтобы использовать console.log(), включите devel: true в списке переменных JSLint.

Переменные JSLint

/*jslint vars: true, plusplus: true, devel: true, nomen: true, indent: 4, maxerr: 50 */ это такая строчка, которая, будучи помещённой в начале кода, взаимодействует с переменными JSLint. Например, devel: true разрешает вам использовать console.log(). Переменная plusplus: true это чтобы писать плохо, а nomen: true разрешает называть переменные _likethis_. Вобщем-то необязательно копировать всю строчку, подумайте какие переменные нужны лично вам.

JSLint manual
Brackets download

2 Симпатий

Прописывать комментарий с параметрами в начале каждого файла не обязательно. Можно добавить в корень проекта файл .jshintrc и в нём прописать необходимые параметры в формате JSON.
А вообще JSHint уже немного устарел. Сейчас актуальный статический анализатор это ESLint. Поддерживает современный стандарт ES6+, более продвинутые настройки и вообще их больше :)