为什么jslint说id_interval超出范围?上次检查时,JavaScript是函数作用域。
Pub.elementLoaded = function (id, callback) {
var isLoaded = document.getElementById(id);
var id_interval = setInterval( function() {
if (isLoaded) {
callback();
clearInterval(id_interval);
}
}, 1);
};
答案 0 :(得分:0)
JSLint强制执行其作者认为的最佳实践,而不是实际的JavaScript语法规则。引自jslint.com关于变量声明:
JSLint使用var规则和let规则的交集,以及 这样做可以避免与之相关的错误。名字应该是 在函数中只声明一次。它应该在它之前声明 使用
在您的代码中,id_interval
在其自己的声明中使用,此时它尚未被声明。
答案 1 :(得分:0)
对于像我这样来到这里的其他人也有一个同样的问题:正如@GertG解释的那样,JSLint只希望您在使用它的块之前声明该变量。
在使用var id_interval;
之前,必须添加setInterval()
,然后在下一行删除var
,因为现在您已经声明了它:
Pub.elementLoaded = function (id, callback) {
var isLoaded = document.getElementById(id);
var id_interval;
id_interval = setInterval( function() {
if (isLoaded) {
callback();
clearInterval(id_interval);
}
}, 1);
};