【问题标题】:Why jsHint says "'setInterval' is not defined"为什么 jsHint 说“'setInterval' 没有定义”
【发布时间】:2014-08-07 07:17:25
【问题描述】:

当我用 jshint 检查我的 *.js 时,这部分显示错误:

function updateStatistic(interval) {
    return setInterval(function () {
        exports.getStatistics();
    }, interval);
}

消息是:“setInterval”未定义。但是为什么呢?

【问题讨论】:

    标签: javascript setinterval jshint


    【解决方案1】:

    或者,您可以让 JSHint 假定一个浏览器:

    /*jshint browser: true */
    

    (Reference)

    【讨论】:

      【解决方案2】:

      您必须在代码顶部的 jshint 标记注释中告诉 jshint 哪些对象和/或函数被认为是全局的。 jsHint 不做任何假设,因为它们会根据代码运行的精确环境而有所不同。

      我使用的方法是告诉 jshint window 对象本身是全局的(以及其他一些对象),其中包含以下内容,并且还引入了 ES5 严格模式指令:

      /*global $ document window localStorage */
      "use strict";
      

      消除关于 setInterval 的警告然后需要在该函数调用前加上 window. 前缀 - 我喜欢必须显式标记我正在使用的全局函数,所以我不认为这是一个缺点。

      【讨论】:

        【解决方案3】:

        如果您不想在 jshint 中调整设置,那么简单地通过 window 对象引用它并没有错,如下所示:

        function updateStatistic(interval) {
           return window.setInterval(function () {
               exports.getStatistics();
           }, interval);
        }
        

        这也将删除 jshint 警告,因为它是在该上下文中定义的。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2017-08-29
          • 2018-08-21
          • 1970-01-01
          • 2013-10-25
          • 2016-09-19
          • 2016-09-27
          • 1970-01-01
          相关资源
          最近更新 更多