Как вы предоставляете глобальную функцию javascript без ошибки ESLint no-unused-var?
Следующий код допустим в ESLint с руководством по стилю Google за одним исключением; функция закрытия Counter
получает ошибку no-unused-vars
, когда скрипт проверяется с помощью ESLint.
/**
* Create a counter that is incremented and returned when called
* @return {object} - incrementor function
*/
function Counter() {
var _i = 0;
/**
* increment counter
* @return {int} - The incremented integer
*/
function _incrementor() {
_i++;
return _i;
}
_incrementor.incr = function() {
this.call();
return _incrementor;
};
_incrementor.val = function(val) {
if (!arguments.length) { return _i; }
_i = val;
return _incrementor;
};
return _incrementor;
}
Я хотел бы иметь эту функцию (или одну структуру таким же образом) в качестве отдельного скрипта, который я могу включить в свой HTML, а затем вызвать из другого скрипта, например:
var count = Counter()
.val(5);
count.incr()
console.log(count.val()) // prints => 6
Я пытался включить /* exported Counter */
в верхней части скрипта, но ошибка сохраняется. Как я могу заставить замолчать / исправить это ошибка?
2 ответа:
Явное добавление счетчика в глобальную область действия приводит к замалчиванию этой ошибки и предотвращает ошибки, которые могут возникнуть в результате неявной глобальной области действия, используемой в вопросе.
/** * Create a counter that is incremented and returned when called * @return {object} - incrementor function */ this.Counter = function() { var _i = 0; /** * increment counter * @return {int} - The incremented integer */ function _incrementor() { _i++; return _i; } _incrementor.incr = function() { this.call(); return _incrementor; }; _incrementor.val = function(val) { if (!arguments.length) { return _i; } _i = val; return _incrementor; }; return _incrementor; };
Вот несколько вариантов указания линтеру разрешить глобальную переменную счетчика:
Опция #1 : Добавьте этот комментарий в начало файла js, когда вам нужно использовать глобальную переменную:
/* globals Counter */
Вариант №2: Добавьте имя переменной к свойству globals в файле конфигурации eslint:
// eslintrc.js module.exports = { // ... globals: { 'Counter': true } }
См ESLint документации для получения дополнительной информации.
Примечание: Вы также можете использовать свойство
env
в файле конфигурации для предопределенных наборов из глобалов вроде: browser (ie. localStorage), jquery, node и др.). Видишь здесь .