Ank*_*arg 3 javascript clearinterval
当我们使用SetInterval返回的值调用clearInterval时,它会使该值为null或未定义.
我调用clearInterval来清除setInterval,但显然setInterval的值保持不变,即使在调用clearInterval后也不会改变.被认为是null还是未定义?这是我的代码片段
var setIntervalId; // declared in global scope
//lined of code
function autorefresh() {
if (statesCount > 0) {
setIntervalId = setInterval(function() {
//lines of code
// calling some handler
}, 30000);
}
if (statesCount === 0) {
clearInterval(setIntervalId);
}
}
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,我每隔30秒调用一次setInterval函数,第一次调用时会为setIntervalId赋值,但即使在调用clearInterval之后,该值仍然存在.在调用clearInterval之后它应该变为null还是未定义?如果它应该为null或undefined我应该在这里做什么.我在全局范围内定义了setIntervalId.
该函数clearInterval不会清除传递给它的值.如果你想清除它,你必须自己做
clearInterval(setIntervalId);
setIntervalId = undefined;
Run Code Online (Sandbox Code Playgroud)
请注意,您似乎没有正确地保护初始呼叫setInterval.这可能导致多次调用,因此您有多个间隔设置.我认为你应该将你的初始if块增加到以下内容
if (statesCount > 0 && typeof(setIntervalId) === 'undefined') {
...
}
Run Code Online (Sandbox Code Playgroud)
调用clearInterval之后,它应该变为null还是未定义?
没有。
它只是个数字。清除间隔后,该数字只是历史上的好奇心。
如果undefined愿意,可以在使用后明确分配给它clearInterval。除非您正在使用它来跟踪您的函数当前是否正在定期运行,否则不需要这样做。
| 归档时间: |
|
| 查看次数: |
6895 次 |
| 最近记录: |