【问题标题】: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 警告,因为它是在该上下文中定义的。