settimeout函数是否被视为整数JavaScript

时间:2018-12-06 03:18:07

标签: javascript timeout settimeout

我正在尝试调试程序,我想知道下面的代码中应考虑什么“ setTimeout”函数。

var timeOut = setTimeout(function(){
   alert("hi");
}, 2000);
// console.log(timeOut);

如果我将这些确切的代码行粘贴到程序中,则控制台只会读取一个整数(在我的情况下为2)。

如果我将代码放入for循环中,则“ timeOut”变量将从2开始递增,然后是3,依此类推。

这是预期的行为吗?

我想调试的主要事情是是否尝试像这样清除超时

"clearTimeout(timeOut);" 

它无法清除,并且警报仍然触发。但是,我在代码中找不到任何会导致这种情况的内容,并且如果我更改变量名称以避免和可能发生冲突,我会遗漏它仍然是相同的行为。

所以我的问题是setTimeout函数默认情况下是否返回整数,而我可能搜索的东西可能会触发此类行为。

1 个答案:

答案 0 :(得分:0)

是的,上面的代码段中的timeOut是一个数字-超时事件的ID,因此您可以根据需要清除它。 (在服务器端是不同的,在服务器端,通过setTimeout返回一个对象,但是效果和用法是相同的。)

此代码将清除超时:

var timeOut = setTimeout(function(){
   alert("hi");
}, 2000);
clearTimeout(timeOut);

如果未清除超时,则必须是错误的ID,或者清除时间太晚。