为什么jsHint说''setInterval'没有定义“

时间:2014-08-07 07:17:25

标签: javascript setinterval jshint

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

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

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

3 个答案:

答案 0 :(得分:11)

或者,你可以让JSHint假设一个浏览器:

/*jshint browser: true */

Reference

答案 1 :(得分:6)

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

我使用的方法是告诉jshint window对象本身是全局的(以及其他一些对象),并且还引入了ES5 strict-mode指令:

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

沉默关于setInterval的警告然后需要使用window.为该函数调用添加前缀 - 我喜欢必须明确标记我使用的全局函数,所以我不认为这是缺点

答案 2 :(得分:1)

如果您不想在jshint中调整设置,只需通过窗口对象引用它就没有错误,如下所示:

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

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