如何在没有ESLint no-unused-var错误的情况下公开全局javascript函数?

时间:2015-12-10 18:23:33

标签: javascript closures eslint

以下代码在ESLint中与Google的样式指南有效,但有一个例外;使用ESLint检查脚本时,闭包函数Counter会出现no-unused-vars错误。

/**
 * 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 */,但错误仍然存​​在。如何静音/修复此错误?

1 个答案:

答案 0 :(得分:0)

以下是告诉linter允许全局Counter变量的一些选项:

选项#1 :当您需要使用全局变量时,将此注释添加到js文件的顶部:

public List<StudentMarkDetails> StudentMarks = new List<StudentMarkDetails>();

选项#2:将变量名称添加到eslint配置文件中的globals属性中:

/* globals Counter */

有关详细信息,请参阅ESLint documentation here

注意:您还可以在配置文件中使用// eslintrc.js module.exports = { // ... globals: { 'Counter': true } } 属性来预定义全局变量集,例如:browser(即localStorage),jquery,node等)。见 here