Как вы предоставляете глобальную функцию 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;
};
Вот несколько вариантов указания линтеру разрешить глобальную переменную Counter:
Вариант № 1: Добавьте этот комментарий в начало файла js, когда вам нужно использовать глобальную переменную:
/* globals Counter */
Вариант № 2: Добавьте имя переменной в свойство globals в вашем файле конфигурации eslint:
// eslintrc.js
module.exports = {
// ...
globals: {
'Counter': true
}
}
См. Документацию ESLint здесь для получения дополнительной информации.
Примечание: вы также можете использовать env
Свойство в вашем конфигурационном файле для предопределенных наборов глобальных переменных, таких как: браузер (т.е. localStorage), jquery, узел и т. д.). Смотрите здесь.