今天在做项目时。发现同事写的代码中的存在一个bug问题,出错代码如下:
clearTimeout(); setTimeout(function(){ // 具体业务逻辑 }, 1000);
这段代码在chrome、firefox浏览器中不会报错,但在IE上会报“调用对象无效”或着报“clearTimeout对象无效”这个错误信息,经过查询发现clearTimeout这个方法必须要传一个参数,具体应修改为:
var timer = null; clearTimeout(timer); timer = setTimeout(function(){ // 具体业务逻辑 }, 1000);
但是经过这样修改后,浏览器控制台还是报同样的错误,经常尝试发现,clearTimeout() 方法需要传入一个 setTimeout() 方法返回的id,当没有返回值时,clearTimeout() 方法在IE下执行还是会报错,最后修改结果如下:
var timer = null; if(null != timer){ clearTimeout(timer); } timer = setTimeout(function(){ // 具体业务逻辑 }, 1000);
当修改成这样时,IE就不会在出现问题了。