为了账号安全,请及时绑定邮箱和手机立即绑定

延迟执行函数 setTimeout 前面的var xxx=null是什么作用?

延迟执行函数 setTimeout 前面的var xxx=null是什么作用?

HUX布斯 2018-11-13 14:09:39
第一次发帖见谅..我想做一个效果鼠标在div上停留两秒后执行一些函数,不超过两秒不执行;然后网上找了setTimeout这个函数成功解决了,因为一直是自学的所以基础薄弱,有些不懂的地方求解一共三个问题在代码中注释了,万分感谢!代码:<script src="jquery.min.js"></script><script>        var timer = null; // 1.此处为什么要在这里声明timmer=null?        $(function(){            $("#test").hover(            function(){                $(this).html("悬停");                timer=setTimeout(function(){alert("hello")},2000); // 2.为什么不能直接去掉第                //一行的声明 ,在此处var timer=setTimeout(...)...            },            function(){                if(timer)  // 3.这里的if语句有什么作用?我试着去掉后函数也能完整运行呀                    clearTimeout(timer);                $(this).html("测试");                 });        });       </script></head><body>    <div id="test">        测试    </div></body>
查看完整描述

1 回答

?
繁星点点滴滴

TA贡献1803条经验 获得超3个赞

  1. setTimeout会返回一个整数id,是计时器编号,提前声明一个变量自然是存储编号用了;

  2. 为什么不能在这里声明?要知道var是函数作用域的,在function里边声明的变量一出去就没了,你叫另一个匿名函数的clearTimeout到哪去找这个变量?

  3. 这里的if主要是严谨,在setTimeout成功返回计时器编号(因为初始是null,如果没返回肯定就false了)的情况下,才会执行clearTimeout(timer)这句,避免前边执行错误时继续执行错误代码。


查看完整回答
反对 回复 2018-12-08
  • 1 回答
  • 0 关注
  • 573 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信