我正在尝试调试程序,我想知道下面的代码中应考虑什么“ setTimeout”函数。
var timeOut = setTimeout(function(){
alert("hi");
}, 2000);
// console.log(timeOut);
如果我将这些确切的代码行粘贴到程序中,则控制台只会读取一个整数(在我的情况下为2)。
如果我将代码放入for循环中,则“ timeOut”变量将从2开始递增,然后是3,依此类推。
这是预期的行为吗?
我想调试的主要事情是是否尝试像这样清除超时
"clearTimeout(timeOut);"
它无法清除,并且警报仍然触发。但是,我在代码中找不到任何会导致这种情况的内容,并且如果我更改变量名称以避免和可能发生冲突,我会遗漏它仍然是相同的行为。
所以我的问题是setTimeout函数默认情况下是否返回整数,而我可能搜索的东西可能会触发此类行为。
答案 0 :(得分:0)
是的,上面的代码段中的timeOut
是一个数字-超时事件的ID,因此您可以根据需要清除它。 (在服务器端是不同的,在服务器端,通过setTimeout返回一个对象,但是效果和用法是相同的。)
此代码将清除超时:
var timeOut = setTimeout(function(){
alert("hi");
}, 2000);
clearTimeout(timeOut);
如果未清除超时,则必须是错误的ID,或者清除时间太晚。